全部產品
Search
文件中心

Microservices Engine:如何在MSE上為Dubbo應用構建服務註冊中心

更新時間:Mar 13, 2025

本文以包含服務提供者和服務消費者的Dubbo微服務應用為例,讓您快速體驗如何在MSE上構建ZooKeeper、Eureka和Nacos等服務註冊中心,實現應用的服務註冊與發現,以及消費者對提供者的調用。

準備工作

在開始開發前,請確保您已經完成以下工作:

建立服務提供者

在本地建立一個提供者應用工程,添加依賴,佈建服務註冊與發現,並將註冊中心指定為Nacos。

  1. 建立Maven專案並引入依賴。

    1. 使用IDE(如IntelliJ IDEA或Eclipse)建立一個Maven專案。

    2. pom.xml檔案中添加dubbo和nacos-client依賴。

      <dependencies>
          <dependency>
              <groupId>org.apache.dubbo</groupId>
              <artifactId>dubbo</artifactId>
              <version>2.7.9</version>
          </dependency>
          <dependency>
              <groupId>com.alibaba.nacos</groupId>
              <artifactId>nacos-client</artifactId>
              <version>1.4.2</version>
          </dependency>
      </dependencies>            
  2. 開發Dubbo服務提供者。

    Dubbo中服務都是以介面的形式提供的。

    1. 在src/main/java工程路徑下建立一個package,命名為com.alibaba.mse。

    2. 在com.alibaba.mse下建立一個介面(interface)IHelloService,裡麵包含一個SayHello方法。

      package com.alibaba.mse;
      
      public interface IHelloService {
         String sayHello(String str);
      }                                
    3. 在com.alibaba.mse下建立一個類IHelloServiceImpl,實現此介面。

      package com.alibaba.mse;
      
      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)和Schema 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.mse.IHelloService" ref="helloService"/>
      
      <bean id="helloService" class="com.alibaba.mse.IHelloServiceImpl"/>                                
    4. provider.xml中將註冊中心指定為本地啟動的Nacos Server。

      <dubbo:registry address="nacos://mse.XX.nacos.mse.aliyuncs.com:8848" />                                
      說明

      若您選擇使用公網網域名稱,請清空白名單。相關操作,請參見設定白名單

      在執行個體列表的訪問方式列,查看在MSE上傳建立的Nacos的外網訪問地址,格式為mse.XX.nacos.mse.aliyuncs.com

      說明

      如果您使用的服務註冊中心是MSE的Zookeeper,那麼您需要將本步驟的註冊中心代碼換成Zookeeper相應的代碼,具體代碼詳情請參見微服務註冊配置中心使用說明

  4. 啟動服務。

    1. 在com.alibaba.mse中建立類Provider,並按下面的代碼在Provider的main函數中載入Spring Context,將配置好的Dubbo服務暴露。

      package com.alibaba.mse;
      
      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服務,表示該服務註冊成功。

建立服務消費者

在本地建立一個消費者應用工程,添加依賴,添加訂閱服務的配置。

建立Maven專案並引入依賴。

  1. 使用IDE(如IntelliJ IDEA或Eclipse)建立一個Maven專案。

  2. pom.xml檔案中添加dubbo和nacos-client依賴。

    <dependencies>
        <dependency>
            <groupId>org.apache.dubbo</groupId>
            <artifactId>dubbo</artifactId>
            <version>2.7.9</version>
        </dependency>
        <dependency>
            <groupId>com.alibaba.nacos</groupId>
            <artifactId>nacos-client</artifactId>
            <version>1.4.2</version>
        </dependency>
    </dependencies>            

結果驗證

執行curl http://localhost:8080/sayHello/mse,如果結果返回Hello, mse,表示Consumer與Provider業務調用成功。

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

`Hello, mse`