spring cloud和dubbo的区别,各自优缺点

来源(背景):
Dubbo,是阿里巴巴服务化治理的核心框架,并被普遍应用于阿里巴巴集团的各成员站点。
Spring Cloud,从命名咱们就能够知道,它是Spring Source的产物,Spring社区的强大背书能够说是Java企业界最有影响力的组织了,除了Spring Source以外,还有Pivotal和Netfix是其强大的后盾与技术输出。其中Netflix开源的整套微服务架构套件是Spring Cloud的核心。redis

传输:
Dubbo因为是二进制的传输,占用带宽会更少;
Spring Cloud是http协议传输,带宽会比较多,同时使用http协议通常会使用JSON报文,消耗会更大。可是在国内95%的公司内,网络消耗不是什么太大问题,若是真的成了问题,经过压缩、二进制、高速缓存、分段降级等方法,很容易解。spring

开发难度:
Dubbo的开发难度较大,缘由是dubbo的jar包依赖问题不少大型工程没法解决;
Spring Cloud的接口协议约定比较自由且松散,须要有强有力的行政措施来限制接口无序升级缓存

后续改进:
Dubbo经过dubbofilter,不少东西没有,须要本身继承,如监控,如日志,如限流,如追踪
Spring Cloud本身带了不少监控、限流措施,可是功能可能和欧美习惯相同,国内须要进行适当改造,但更简单,就是ServletFilter而已,可是总归比dubbo多一些东西是好的;网络

注册中心:
Dubbo的注册中心能够选择zk,redis等多种;
Spring Cloud:的注册中心只能用eureka或者自研;架构

配置中心:
dubbo:若是咱们使用配置中心、分布式跟踪这些内容都须要本身去集成,无形中增长了使用难度。
Spring Cloud:提供了微服务的一整套解决方案:服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等负载均衡

核心部件的比较:
Dubbo:
Provider:暴露服务的提供方,能够经过 jar 或者容器的方式启动服务。
Consumer:调用远程服务的服务消费方。
Registry:服务注册中心和发现中心。
Monitor:统计服务和调用次数,调用时间监控中心。(Dubbo 的控制台页面中能够显示,目前只有一个简单版本。)
Container:服务运行的容器。
Spring Cloud:
Service Provider: 暴露服务的提供方。
Service Consumer:调用远程服务的服务消费方。
EureKa Server: 服务注册中心和服务发现中心。框架

架构的完整度:
Dubbo只是实现了服务治理;
Spring Cloud下面有17个子项目(可能还会新增)分别覆盖了微服务架构下的方方面面,服务治理只是其中的一个方面;
必定程度来讲,Dubbo只是Spring Cloud Netflix中的一个子集。maven

服务依赖方式:
Dubbo:服务提供方与消费方经过接口的方式依赖,服务调用设计以下:
Interface 层:服务接口层,定义了服务对外提供的全部接口。
Molel 层:服务的 DTO 对象层。
Business层:业务实现层,实现 Interface 接口而且和 DB 交互。
所以须要为每一个微服务定义各自的 Interface 接口,并经过持续集成发布到私有仓库中。调用方应用对微服务提供的抽象接口存在强依赖关系,开发、测试、集成环境都须要严格的管理版本依赖。分布式

经过 maven 的 install & deploy 命令把 Interface 和 Model 层发布到仓库中,服务调用方只须要依赖 Interface 和 Model 层便可。在开发调试阶段只发布 Snapshot 版本,等到服务调试完成再发布;Release 版本,经过版本号来区分每次迭代的版本。经过 xml 配置方式便可接入 Dubbo,对程序无***。
总之:服务提供方与消费方经过接口的方式依赖,Dubbo 服务依赖略重,须要有完善的版本管理机制,可是程序***少。ide

Spring Cloud:
服务提供方和服务消费方经过 Json 方式交互,所以只须要定义好相关 Json 字段便可,消费方和提供方无接口依赖。经过注解方式来实现服务配置,对于程序有必定***。
经过 Json 交互,省略了版本管理的问题,可是具体字段含义须要统一管理,自身 Rest API 方式交互,为跨平台调用奠基了基础。


整体:
Dubbo:使用Dubbo构建的微服务架构就像组装电脑,各环节咱们的选择自由度很高,可是最终结果颇有可能由于一条内存质量不行就点不亮了,老是让人不怎么放心,可是若是你是一名高手,那这些都不是问题;
Spring Cloud就像品牌机,在Spring Source的整合下,作了大量的兼容性测试,保证了机器拥有更高的稳定性,可是若是要在使用非原装组件外的东西,就须要对其基础有足够的了解。

-------------------------------------
优缺点(综上获得):
-------------------------------------
Dubbo
优势:
1.支持各类通讯协议,并且消费方和服务方使用长连接方式交互,通讯速度上略胜 ;
2.采用rpc方式,性能上比Spring Cloud的rpc更好;
3.dubbo的网络消耗小于springcloud
缺点:
1.若是咱们使用配置中心、分布式跟踪这些内容都须要本身去集成;
2.开发难度较大,缘由是dubbo的jar包依赖问题不少大型工程没法解决;
3.

Spring Cloud 案例 www.1b23.com:
优势:
一、产出于Spring你们族,Spring在企业级开发框架中来头很大,能够保证后续的更新、完善。
二、spring cloud社区活跃,教程丰富,遇到问题很容易找到解决方案;
三、spring cloud功能比dubbo更加完善;
五、spring cloud采用rest访问方式,rest的技术无关性使用效果更棒;
六、spring cloud轻轻松松几行代码就完成了熔断、均衡负责、服务中心的各类平台功能;
七、从公司招聘工程师方面,spring cloud更有优点,由于其技术更新更炫;
八、提供了微服务的一整套解决方案:服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等;做为一个微服务治理的你们伙,考虑的很全面,几乎服务治理的方方面面都考虑到了,方便开发开箱即用;

缺点:1.若是对于系统的响应时间有严格要求,长连接更合适。2.接口协议约定比较自由且松散,须要有强有力的行政措施来限制接口无序升级

相关文章
相关标签/搜索