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

区别:
-----
来源(背景):
Dubbo,是阿里巴巴服务化治理的核心框架,并被广泛应用于阿里巴巴集团的各成员站点。
Spring Cloud,从命名我们就可以知道,它是Spring Source的产物,Spring社区的强大背书可以说是Java企业界最有影响力的组织了,除了Spring Source之外,还有Pivotal和Netfix是其强大的后盾与技术输出。其中Netflix开源的整套微服务架构套件是Spring Cloud的核心。
 
传输:
Dubbo由于是二进制的传输,占用带宽会更少;
Spring Cloud是http协议传输,带宽会比较多,同时使用http协议一般会使用JSON报文,消耗会更大。但是在国内95%的公司内,网络消耗不是什么太大问题,如果真的成了问题,通过压缩、二进制、高速缓存、分段降级等方法,很容易解。
 
开发难度:
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中的一个子集。
 
服务依赖方式:
Dubbo:服务提供方与消费方通过接口的方式依赖,服务调用设计如下:
  • Interface 层:服务接口层,定义了服务对外提供的所有接口。
  • Molel 层:服务的 DTO 对象层。
  • Business层:业务实现层,实现 Interface 接口并且和 DB 交互。
因此需要为每个微服务定义各自的 Interface 接口,并通过持续集成发布到私有仓库中。调用方应用对微服务提供的抽象接口存在强依赖关系,开发、测试、集成环境都需要严格的管理版本依赖。
 
通过 maven 的 install & deploy 命令把 Interface 和 Model 层发布到仓库中,服务调用方只需要依赖 Interface 和 Model 层即可。在开发调试阶段只发布 Snapshot 版本,等到服务调试完成再发布;Release 版本,通过版本号来区分每次迭代的版本。通过 xml 配置方式即可接入 Dubbo,对程序无入侵。
总之:服务提供方与消费方通过接口的方式依赖,Dubbo 服务依赖略重,需要有完善的版本管理机制,但是程序入侵少。
 
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:
优点:
1、产出于Spring大家族,Spring在企业级开发框架中来头很大,可以保证后续的更新、完善。
2、spring cloud社区活跃,教程丰富,遇到问题很容易找到解决方案;
3、spring cloud功能比dubbo更加完善;
5、spring cloud采用rest访问方式,rest的技术无关性使用效果更棒;
6、spring cloud轻轻松松几行代码就完成了熔断、均衡负责、服务中心的各种平台功能;
7、从公司招聘工程师方面,spring cloud更有优势,因为其技术更新更炫;
8、提供了微服务的一整套解决方案:服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等;作为一个微服务治理的大家伙,考虑的很全面,几乎服务治理的方方面面都考虑到了,方便开发开箱即用;
 
缺点:
1.如果对于系统的响应时间有严格要求,长链接更合适。
2.接口协议约定比较自由且松散,需要有强有力的行政措施来限制接口无序升级
 
-----------------------------------------------
参考自:
 
 
  • 17
    点赞
  • 43
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
### 回答1: Springclouddubbo都是常用的微服务框架,它们各有优缺点Springcloud具有更完整的生态系统,提供了更多的组件和工具,支持更多的协议和编程语言,适用于大型分布式系统的构建。而dubbo则更加轻量级,性能更好,适用于中小型分布式系统的构建。此外,Springcloud更加注重开发者的体验和易用性,而dubbo则更加注重性能和稳定性。因此,选择哪个框架应该根据具体的需求和场景来决定。 ### 回答2: Spring CloudDubbo是当前比较流行的微服务框架,它们在很多方面有着相似之处,但也存在一些差异。 首先,就优点而言,Spring Cloud提供了众多的组件和库,可以轻松地构建和管理微服务架构。它基于Spring框架,具有较高的灵活性和开发效率,同时还支持各种服务注册和发现机制,如Eureka、Consul等。另外,Spring Cloud还提供了多种负载均衡、断路器、配置管理及分布式追踪等功能,方便开发人员进行服务治理和监控。此外,Spring CloudSpring Boot紧密集成,简化了配置和部署操作。 相比之下,Dubbo是一款由阿里巴巴开源的Java RPC框架,具有较高的性能和可靠性。Dubbo支持多种传输和协议,可根据需求选择最佳的通信方式,同时还提供了诸如负载均衡、集群容错、路由等高级特性,能够保证服务的高可用性和可扩展性。此外,Dubbo还支持服务治理和监控,可通过管理控制台进行服务的动态注册和查看。另外,Dubbo支持多种开发语言,适用于跨语言的分布式应用开发。 然而,Spring Cloud在某些方面也有优势。首先,Spring Cloud具有更广泛的社区支持,相关文档和教程较多,开发者可以更容易地找到解决方案。其次,Spring Cloud对于Spring系列已有的成熟技术栈有很好的整合,开发者可以无缝地切换模块。最后,Spring Cloud可以更好地与其他云原生技术结合使用,例如Kubernetes、Docker等。 综上所述,Spring CloudDubbo都是优秀的微服务框架,各自在不同方面有所优势。选择合适的框架需要根据项目需求和团队技术栈来决定。 ### 回答3: Spring CloudDubbo都是目前非常流行的分布式微服务框架,但它们在设计思想、特点和使用方式上有一些区别。 首先,Spring Cloud是基于Spring框架的开源微服务框架,它提供了一整套开发分布式系统的解决方案,包括服务注册与发现、服务调用、负载均衡、断路器、配置管理等。它采用的是HTTP协议作为通信协议,REST风格的接口设计。Spring Cloud具有更加灵活的架构,可以与各种开发语言和技术栈集成,适用于大部分的企业应用场景。 而Dubbo是阿里巴巴开源的高性能微服务框架,它基于RPC(Remote Procedure Call)协议进行通信,适用于Java开发。Dubbo除了提供了服务注册与发现、负载均衡等基本的功能,还支持分布式事务、服务治理、限流、降级等高级特性。Dubbo的性能非常高,适用于大规模、高并发的分布式系统。 对比两者的优点,Spring Cloud具有更高的灵活性和通用性,可以与各种技术栈集成,适用于不同的企业应用场景。它基于Spring框架,具有广泛的社区支持,生态系统更加成熟。而Dubbo在性能方面更加出色,适用于大规模的高并发系统。 缺点方面,Spring Cloud的学习曲线相对较陡峭,因为它的架构相对复杂,需要掌握更多的组件和概念。而Dubbo对于非Java语言的支持较弱,限制了它的适用场景。 综上所述,选择使用哪个微服务框架需要根据实际情况来决定。如果项目需要高性能、大规模并发处理的能力,适合选择Dubbo;如果需要更高的灵活性和通用性,适合选择Spring Cloud。当然,根据实际情况也可以将两者结合使用,根据需求场景灵活选择。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Chauncy昌西

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值