springboot dubbo的整合以及与springcloud fein的对比
2017-12-15 14:40
726 查看
由于最近接手了一个老的项目,服务的治理采用的是dubbo的方式,趁着中午空闲的时间,将springboot和dubbo做了一个整合,整合的过程中发现dubbo的方式和fein的方式有些相似,所以也在这里一起拿出来记录一下。首先说一下整合,基本的架构就是ZK+dubbo服务提供,ZK+dubbo服务消费,ZK的安装就不在这里说了,先看一下dubbo服务提供端的pom文件:
下边重点说一下和fein的方式的对比。
第一、从表面上看,zk+dubbo的方式,类似于springcloud consul + fein的方式,但是比eruka+fein的方式要复杂一些,毕竟还要单独安装zk,zk和consul都需要安装,fein和dubbo都是接口的方式调用
第二、fein对服务提供的包名没有严格限制
第三、dubbo基于RPC,而fein基于ribbon,ribbon基于http
暂时肤浅的总结上述三点,以后继续深入
<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.3.6.RELEASE</version> </parent> <dependencies> <dependency> <groupId>io.dubbo.springboot</groupId> <artifactId>spring-boot-starter-dubbo</artifactId> <version>1.0.0</version> </dependency> </dependencies>spring-boot-starter-dubbo这个jar是一个开源的项目对dubbo做了整合,有兴趣的同学可以在这里看源码,这个项目有1800多个star,阿里官方在GitHub也有dubbo和springcloud的整合,不过只有300多个star,我用的是前边的jar。配置文件如下:
#应用名称 spring.dubbo.application.name=provider #注册中心地址 spring.dubbo.registry.address=zookeeper://127.0.0.1:2181 #协议名称 spring.dubbo.protocol.name=dubbo #协议端口 spring.dubbo.protocol.port=20880 #服务类包目录 spring.dubbo.scan=com.springcloud.learn.dubbo服务的实现类,需要添加一个额外的Service标识服务,继承的接口内容也很简单就是一个方法
@Service(version = "1.0.0") public class ServiceDubboImpl implements ServiceDubbo { @Override public String returnFlag() { return "来自dubbo的服务返回的数据!"; } }至此springboot+dubbo的服务端提供的内容到此为止了,启动的时候可以看到以下日志,说明服务已经注册在zk上了
2017-12-15 12:47:00.475 WARN 9548 --- [ver worker #1-1] c.a.d.remoting.transport.AbstractServer : [DUBBO] All clients has discontected from /10.75.134.178:20880. You can graceful shutdown now., dubbo version: 2.5.3, current host: 127.0.0.1 2017-12-15 12:47:00.479 INFO 9548 --- [:20880-thread-4] c.a.d.rpc.protocol.dubbo.DubboProtocol : [DUBBO] disconected from /10.75.134.178:55541,url:dubbo://10.75.134.178:20880/com.springcloud.learn.dubbo.service.ServiceDubbo?anyhost=true&application=provider&channel.readonly.sent=true&codec=dubbo&dubbo=2.5.3&heartbeat=60000&interface=com.springcloud.learn.dubbo.service.ServiceDubbo&methods=returnFlag&pid=9548&revision=1.0.0&side=provider×tamp=1513312058396&version=1.0.0, dubbo version: 2.5.3, current host: 127.0.0.1dubbo的服务消费端,需要添加相同的jar包,配置文件的内容,有少许差别,如下:
spring.dubbo.application.name=consumer spring.dubbo.registry.address=zookeeper://127.0.0.1:2181 spring.dubbo.scan=com.springcloud.learn.dubbo这里有一点需要注意的是,spring.dubbo.scan需要扫描的包和服务提供端要保持一致,这就要求在消费端定义对应的接口的时候也要保持一致,这块最好的方式是将dubbo需要提供的服务以jar包的方式引入到消费端的服务中去,这一点和fein的方式是有很大不同的,fein没有对包名做这么强的限制。调用使用的Java类如下:
@RestController public class DubboController { @Reference(version = "1.0.0") ServiceDubbo serviceDubbo; @RequestMapping(value = "/use", method = RequestMethod.GET) public String dc() { return serviceDubbo.returnFlag(); } }在使用服务的时候需要添加@Reference(version = "1.0.0")注解,这样就可以在消费端启动消费了。
下边重点说一下和fein的方式的对比。
第一、从表面上看,zk+dubbo的方式,类似于springcloud consul + fein的方式,但是比eruka+fein的方式要复杂一些,毕竟还要单独安装zk,zk和consul都需要安装,fein和dubbo都是接口的方式调用
第二、fein对服务提供的包名没有严格限制
第三、dubbo基于RPC,而fein基于ribbon,ribbon基于http
暂时肤浅的总结上述三点,以后继续深入
相关文章推荐
- springcloud-ribbon、fein服务调用的对比使用以及重试机制的使用
- Springboot 整合 Dubbo/ZooKeeper 详解 SOA 案例
- Springboot整合JPA以及动态条件查询的实现
- Spring boot和dubbo整合——基于传统方式
- 微服务架构框架选择:Spring Cloud 和 Dubbo对比
- Spring Boot整合Dubbo使用及开发笔记
- spring-boot整合dubbo:Spring-boot-dubbo-starter
- 快速搭建springboot框架以及整合ssm+shiro+安装Rabbitmq和Erlang、Mysql下载与配置
- 整合Spring Cloud + spring boot..分布式微服务云架构技术
- Spring Boot整合Dubbo框架demo
- springboot 整合dubbo最佳实践 (使用redis作为注册中心)
- springboot整合dubbo
- 整合阿里dubbo服务的项目搭建实战(springboot)
- Spring Boot学习之旅:(六)springboot 整合 redis 以及 redis 通用工具类
- spring boot 与dubbo 2.8.4整合的一些问题
- springboot整合dubbo
- spring boot / cloud (五) 自签SSL证书以及HTTPS
- spring boot - cloud (二) 规范响应格式以及统一异常处理
- SpringBoot 整合 dubbo xml实现代码示例
- Spring Boot整合Dubbo