本文以包含服务提供者和服务消费者的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`