所有分类
  • 所有分类
  • 未分类

Dubbo与SpringCloud区别

简介

本文介绍Dubbo与SpringCloud的区别,包括使用场景和优缺点。

对比

使用场景

SpringCloudDubbo
中小项目。大项目,并发大。(一般百人以上的项目)

SpringCloud占优势的项

SpringCloudDubbo
包依赖维护简单:通过maven指定spring-cloud-parent版本即可。维护困难:需要手动维护jar包依赖。
功能支持功能完善:SpringCloud定位是微服务架构。 提供了微服务整套方案:服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等。功能不完善:Dubbo定位是RPC 和服务治理。 配置中心、分布式跟踪等都需要自己去集成;
开发难度简单:通过注解、配置等方式可直接使用。        复杂:服务提供方要提供服务接口jar包。         服务提供方与调用方接口依赖方式太强,需管理好版本。         通常我们在提供对外服务时,都会以REST的方式提供出去。Dubbo中我们要提供REST接口时,不得不实现一层代理,用来将RPC接口转换成REST接口进行对外发布。 
后期维护容易:社区活跃,教程丰富,遇到问题容易找到解决方案较难:社区不够活跃

Dubbo占优势的项

SpringCloudDubbo
性能稍弱(主要是通信协议问题)。 Http 协议 + Rest 接口。稍强。 RPC:TCP长连接和NIO异步传输(Netty实现);。 适合系统的响应时间有严格要求的场景(长连接的作用)。
网络消耗大。 http协议传输,带宽会比较多 国内95%的公司内,网络消耗不是什么太大问题。若真的成了问题,通过压缩、二进制、高速缓存、分段降级等方法,很容易解决。小。 二进制的传输,占用带宽会更少。
接口约定较难约束(接口协议约定比较自由且松散)。 需要有强有力的行政措施来限制接口无序升级。容易约束。 统一提供方提供的服务接口jar包版本即可。

功能支持

DubboSpringCloud
服务注册中心ZookeeperSpring Cloud Netfix Eureka
服务调用方式RPCREST API
服务监控Dubbo-monitor, Spring Boot AdminSpring Boot Admin
熔断器不完善Spring Cloud Netflix Hystrix
服务网关Spring Cloud Netflix Zuul
分布式配置Spring Cloud Config
服务跟踪Spring Cloud Sleuth
数据流Spring Cloud Stream
批量任务Spring Cloud Task
信息总线Spring Cloud Bus

Dubbo对于上表中总结为“无”的组件不代表不能实现,而只是Dubbo框架自身不提供,需要另外整合以实现对应的功能,比如:

  • 分布式配置:可以使用淘宝的diamond、百度的disconf来实现分布式配置管理。但是Spring Cloud中的Config组件除了提供配置管理之外,由于其存储可以使用git,因此它天然的实现了配置内容的版本管理,可以完美的与应用版本管理整合起来。
  • 服务跟踪:可以使用京东开源的Hydra
  • 批量任务:可以使用当当开源的Elastic-Job
  • ……

虽然,Dubbo自身只是实现了服务治理的基础,其他为保证集群安全、可维护、可测试等特性方面都没有很好的实现,但是几乎大部分关键组件都能找到第三方开源来实现,这些组件主要来自于国内各家大型互联网企业的开源产品。

Dubbo 已经适配到 Spring Cloud 生态,比如作为 Spring Cloud 的二进制通信方案来发挥 Dubbo 的性能优势,Dubbo 通过模块化以及对 HTTP 的支持适配到 Spring Cloud。 ​

0

评论0

请先

显示验证码
没有账号?注册  忘记密码?

社交账号快速登录