本文以包含服务提供者和服务消费者的Dubbo微服务应用为例,让您快速体验如何在MSE上构建ZooKeeper、Eureka和Nacos等服务注册中心,实现应用的服务注册与发现,以及消费者对提供者的调用。

准备工作

在开始开发前,请确保您已经完成以下工作:

在MSE上创建服务注册中心

本文以在MSE构建Nacos为例。

说明
  1. 进入MSE实例创建页面。
    • 未开通MSE集群托管
      1. 登录MSE产品页
      2. 选择您需要创建的MSE实例,例如ZooKeeperEurekaNacos

        进入MSE实例创建及购买页面。

    • 已开通MSE集群托管
      1. 登录MSE注册中心控制台
      2. 实例列表页面单击创建实例
  2. 设置付费模式。

    在MSE购买页面选择付费模式。

    MSE有预付费(包年包月)和按量付费(按小时)两种模式,如果您的服务注册中心使用时间在一个月以上,建议采用更加优惠的预付费(包年包月)模式。

  3. 配置实例地域信息。
    选择您MSE实例所在地域。
    说明 目前MSE现以开放了华东1(杭州)华东2(上海)华北2(北京)华北3(张家口)华南1(深圳)地域。
  4. 配置引擎基本信息。
    MSE创建Nacos实例
    • 引擎类型:选择Nacos
    • 引擎版本:推荐使用1.1.3
    • 引擎规格:MSE实例规格有四种规格:1核2G2核4G4核8G8核16G

      在选择规格时,请参见MSE实例能力评估选择您适用的规格。

    • 集群节点数:选择集群内的节点数,即一个集群需要多少台上述规格的ECS组成。
  5. 单击立即购买
    创建完成后,如果所创建的Nacos状态为运行中,表示Nacos创建完成。在MSE创建Nacos完成

    其中访问列对应的mse.XX.nacos.mse.aliyuncs.com为Nacos访问地址。

创建服务提供者

在本地创建一个提供者应用工程,添加依赖,配置服务注册与发现,并将注册中心指定为Nacos。

  1. 创建Maven项目并引入依赖。
    1. 使用IDE(如IntelliJ IDEA或Eclipse)创建一个Maven项目。
    2. pom.xml文件中添加dubbo、dubbo-registry-nacos和nacos-client依赖。
      <dependencies>
          <dependency>
              <groupId>org.apache.dubbo</groupId>
              <artifactId>dubbo</artifactId>
              <version>2.7.3</version>
          </dependency>
          <dependency>
              <groupId>com.alibaba.nacos</groupId>
              <artifactId>nacos-client</artifactId>
              <version>1.1.1</version>
          </dependency>
      </dependencies>            
  2. 开发Dubbo服务提供者。
    Dubbo中服务都是以接口的形式提供的。
    1. src/main/java工程路径下创建一个package,命名为com.alibaba.edas
    2. com.alibaba.edas下创建一个接口(interface)IHelloService,里面包含一个SayHello方法。
      package com.alibaba.edas;
      
      public interface IHelloService {
         String sayHello(String str);
      }                                
    3. com.alibaba.edas下创建一个类IHelloServiceImpl,实现此接口。
      package com.alibaba.edas;
      
      public class IHelloServiceImpl implements IHelloService {
      public String sayHello(String str) {
          return "hello " + str;
          }
      }                          
  3. 配置Dubbo服务。
    1. src/main/resources路径下创建provider.xml文件并打开。
    2. provider.xml中,添加Spring相关的XML Namespace(xmlns)和XML Schema Instance(xmlns:xsi),以及Dubbo相关的Namespace(xmlns:dubbo)和Scheme Instance(xsi:schemaLocation)。
      <beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xmlns:dubbo="http://dubbo.apache.org/schema/dubbo"
      xmlns="http://www.springframework.org/schema/beans"
      xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.3.xsd
      http://dubbo.apache.org/schema/dubbo http://dubbo.apache.org/schema/dubbo/dubbo.xsd">                   
    3. provider.xml中将接口和实现类暴露成Dubbo服务。
      <dubbo:application name="demo-provider"/>
      
      <dubbo:protocol name="dubbo" port="28082"/>
      
      <dubbo:service interface="com.alibaba.edas.IHelloService" ref="helloService"/>
      
      <bean id="helloService" class="com.alibaba.edas.IHelloServiceImpl"/>                                
    4. provider.xml中将注册中心指定为本地启动的Nacos Server。
      <dubbo:registry address="nacos://mse.XX.nacos.mse.aliyuncs.com:8848" />                                

      其中mse.XX.nacos.mse.aliyuncs.com为在MSE上传创建的Nacos的外网访问地址,如下图所示。

      在MSE创建Nacos完成
      说明 如果您使用的服务注册中心是MSE的Zookeeper,那么您需要将本步骤的注册中心代码换成Zookeeper相应的代码,具体代码详情请参见MSE微服务组件托管使用说明
  4. 启动服务。
    1. com.alibaba.edas中创建类Provider,并按下面的代码在Provider的main函数中加载Spring Context,将配置好的Dubbo服务暴露。
      package com.alibaba.edas;
      
      import org.springframework.context.support.ClassPathXmlApplicationContext;
      
      public class Provider {
          public static void main(String[] args) throws Exception {
              ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(new String[] {"provider.xml"});
              context.start();
              System.in.read();
          }
      }                
    2. 执行Provider的main函数,启动服务。
  5. 验证结果。
    1. 登录MSE注册中心控制台
    2. 在左侧导航树中单击实例列表,并在实例列表页单击已创建的MSE实例。
    3. 设置MSE引擎访问白名单。
      如果没有填写任何IP地址及掩码,表示允许所有地址均可访问该实例。本文以无白名单为例。
    4. 在实例详情页面的左侧导航树,单击服务管理
      如果在服务管理列表中存在Provider服务,表示该服务注册成功。SpringCloud应用使用mse创建的nacos服务注册成功

创建服务消费者

在本地创建一个消费者应用工程,添加依赖,添加订阅服务的配置。

创建Maven项目并引入依赖。
  1. 使用IDE(如IntelliJ IDEA或Eclipse)创建一个Maven项目。
  2. pom.xml文件中添加dubbo、dubbo-registry-nacos和nacos-client依赖。
    <dependencies>
        <dependency>
            <groupId>org.apache.dubbo</groupId>
            <artifactId>dubbo</artifactId>
            <version>2.7.3</version>
        </dependency>
        <dependency>
            <groupId>com.alibaba.nacos</groupId>
            <artifactId>nacos-client</artifactId>
            <version>1.1.1</version>
        </dependency>
    </dependencies>            

结果验证

执行curl http://localhost:8080/sayHello/EDAS,如果结果返回Hello, EDAS,表示Consumer与Provider业务调用成功。

`curl http://localhost:8080/sayHello/EDAS`

`Hello, EDAS`