本文以包含服務提供者和服務消費者的Dubbo微服務應用為例,讓您快速體驗如何在MSE上構建ZooKeeper、Eureka和Nacos等服務註冊中心,實現應用的服務註冊與發現,以及消費者對提供者的調用。
準備工作
在開始開發前,請確保您已經完成以下工作:
建立服務提供者
在本地建立一個提供者應用工程,添加依賴,佈建服務註冊與發現,並將註冊中心指定為Nacos。
建立Maven專案並引入依賴。
使用IDE(如IntelliJ IDEA或Eclipse)建立一個Maven專案。
在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>
開發Dubbo服務提供者。
Dubbo中服務都是以介面的形式提供的。
在src/main/java工程路徑下建立一個package,命名為com.alibaba.mse。
在com.alibaba.mse下建立一個介面(interface)IHelloService,裡麵包含一個SayHello方法。
package com.alibaba.mse; public interface IHelloService { String sayHello(String str); }在com.alibaba.mse下建立一個類IHelloServiceImpl,實現此介面。
package com.alibaba.mse; public class IHelloServiceImpl implements IHelloService { public String sayHello(String str) { return "hello " + str; } }
配置Dubbo服務。
在src/main/resources路徑下建立provider.xml檔案並開啟。
在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">在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"/>在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相應的代碼,具體代碼詳情請參見微服務註冊配置中心使用說明。
啟動服務。
在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(); } }執行Provider的main函數,啟動服務。
驗證結果。
登入MSE註冊中心控制台。
在左側導覽列,選擇,並在執行個體列表頁單擊已建立的MSE執行個體。
設定MSE引擎訪問白名單。
如果沒有填寫任何IP地址及掩碼,表示允許所有地址均可訪問該執行個體。本文以無白名單為例。
在執行個體詳情頁面的左側導覽列,選擇,在服務列表中,如果存在Provider服務,表示該服務註冊成功。
建立服務消費者
在本地建立一個消費者應用工程,添加依賴,添加訂閱服務的配置。
建立Maven專案並引入依賴。
使用IDE(如IntelliJ IDEA或Eclipse)建立一個Maven專案。
在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`