Spring Cloud Alibaba和Dubbo融合实现
服务提供者
创建一个名为hello-dubbo-nacos-provider的服务提供者项目
POM
4.0.0 org.springframework.boot spring-boot-starter-parent 2.1.6.RELEASE com.antoniopeng hello-dubbo-nacos-provider pom hello-dubbo-nacos-provider-api hello-dubbo-nacos-provider-service
该项目下有两个子模块,分别是hello-dubbo-nacos-provider-api和hello-dubbo-nacos-provider-service,前者用于定义接口,后者用于实现接口。
服务提供者接口模块
在服务提供者项目下创建一个名为hello-dubbo-nacos-provider-api的模块,该项目模块只负责定义接口
POM
4.0.0 com.antoniopeng hello-dubbo-nacos-provider 0.0.1-SNAPSHOT hello-dubbo-nacos-provider-api jar
定义一个接口
publicinterfaceEchoService{ Stringecho(Stringstring); }
服务提供者接口实现模块
创建名为hello-dubbo-nacos-provider-service服务提供者接口的实现模块,用于实现在接口模块中定义的接口。
引入依赖
在pom.xml中主要添加以下依赖
org.apache.dubbo dubbo-spring-boot-starter org.apache.dubbo dubbo org.apache.dubbo dubbo-serialization-kryo com.alibaba dubbo-registry-nacos com.alibaba.nacos nacos-client com.alibaba.spring spring-context-support com.antoniopeng hello-dubbo-nacos-provider-api ${project.parent.version}
相关配置
在application.yml中加入相关配置
spring: application: name:dubbo-nacos-provider main: allow-bean-definition-overriding:true dubbo: scan: #接口扫描路径 base-packages:com.antoniopeng.hello.dubbo.nacos.provider.service protocol: name:dubbo #-1代表自动分配端口 port:-1 #配置高速序列化规则 serialization:kryo registry: #服务注册地址,也就是Nacos的服务器地址 address:nacos://192.168.127.132:8848 provider: #配置负载均衡策略(轮询) loadbalance:roundrobin
附:Duubo负载均衡策略
- random:随机
- roundrobin:轮询
- leastactive:最少活跃数
- consistenthash:一致性Hash
实现接口
通过org.apache.dubbo.config.annotation包下的@Service注解将接口暴露出去
importcom.antoniopeng.hello.dubbo.nacos.provider.api.EchoService; importorg.apache.dubbo.config.annotation.Service; @Service(version="1.0.0") publicclassEchoServiceImplimplementsEchoService{ @Override publicStringecho(Stringstring){ return"EchoHelloDubbo"+string; } }
注意:@Service注解要注明version属性
验证是否成功
启动项目,通过浏览器访问NacosServer网址http://192.168.127.132:8848/nacos,会发现有一个服务已经注册在服务列表中。
服务消费者
创建一个名为hello-dubbo-nacos-consumer的服务消费者项目
引入依赖
同样在pom.xml中添加以下主要依赖
org.apache.dubbo dubbo-spring-boot-starter org.apache.dubbo dubbo-serialization-kryo org.apache.dubbo dubbo-spring-boot-actuator org.apache.dubbo dubbo com.alibaba dubbo-registry-nacos com.alibaba.nacos nacos-client com.alibaba.spring spring-context-support com.antoniopeng hello-dubbo-nacos-provider-api ${project.parent.version}
相关配置
在application.yml中添加以下配置
spring: application: name:dubbo-nacos-consumer main: allow-bean-definition-overriding:true dubbo: scan: #配置Controller扫描路径 base-packages:com.antoniopeng.dubbo.nacos.consumer.controller protocol: name:dubbo port:-1 registry: address:nacos://192.168.127.132:8848 server: port:8080 #服务监控检查 endpoints: dubbo: enabled:true management: health: dubbo: status: defaults:memory extras:threadpool endpoints: web: exposure: include:"*"
Controller
通过org.apache.dubbo.config.annotation包下的@Reference注解以RPC通信的方式调用服务,而对外提供以HTTP通信的方式的RestfulAPI
importcom.antoniopeng.dubbo.nacos.provider.api.EchoService; importorg.apache.dubbo.config.annotation.Reference; importorg.springframework.web.bind.annotation.GetMapping; importorg.springframework.web.bind.annotation.PathVariable; importorg.springframework.web.bind.annotation.RestController; @RestController publicclassEchoController{ @Reference(version="1.0.0") privateEchoServiceechoService; @GetMapping(value="/echo/{string}") publicStringecho(@PathVariableStringstring){ returnechoService.echo(string); } }
验证是否成功
通过浏览器访问NacosServer网址http:192.168.127.132:8848/nacos,会发现又多了一个服务在服务列表中。
然后再访问服务消费者对外提供的RESTfulAPIhttp://localhost:8080/echo/hi,浏览器会响应以下内容:
EchoHelloDubbohi
到此,实现了Nacos与Dubbo的融合。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。