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包依赖问题很多大型工程无法解决;

Spring Cloud:

优点:

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

缺点:

  • 如果对于系统的响应时间有严格要求,长链接更合适。
  • 接口协议约定比较自由且松散,需要有强有力的行政措施来限制接口无序升级

参考

https://blog.csdn.net/u010664947/article/details/80007767

https://blog.csdn.net/zuiyingong6567/article/details/80229310

原文地址:https://www.cnblogs.com/kaleidoscope/p/9800513.html

时间: 2024-10-29 16:15:57

spring cloud & dubbo的相关文章

Sentinel Getting Started And Integration of Spring Cloud Alibaba Tutorials

原文链接:Sentinel Getting Started And Integration of Spring Cloud Alibaba Tutorials Sentinel Getting Started And Integration of Spring Cloud Alibaba Tutorials TIPS This article based on:a Spring Boot 2.1.5 Spring Cloud Greenwich.SR1 Spring Cloud Alibaba

孰优孰劣?Dubbo VS Spring Cloud性能测试大对决!

最近我们试图从Dubbo迁移到Spring Cloud.为此对二者分别进行了性能测试.为了得出数据量不同的情况下的二者的性能表现,我们分别准备了一个25个属性pojo对象和一个50个属性的pojo对象,通过这样的方式我们也可以间接地了解二者在序列化方面的水平. 以下是测试结果: 25个属性,10W次: 50个属性,10W次: 分析:         由于Spring Cloud与Dubbo天生使用的协议层面不一样,前者是HTTP,后者是TCP(使用的是Netty NIO框架,序列化使用的阿里定制

微服务架构的基础框架选择:Spring Cloud还是Dubbo?

本文转自:http://mt.sohu.com/20160803/n462486707.shtml 最近一段时间不论互联网还是传统行业,凡是涉及信息技术范畴的圈子几乎都在讨论 微服务架构 .近期也看到各大技术社区开始组织一些沙龙和论坛来分享Spring Cloud的相关实施经验,这对于最近正在整理Spring Cloud相关套件内容与实例应用的我而言,还是有不少激励的. 目前,Spring Cloud在国内的知名度并不高,在前阵子的求职过程中,与一些互联网公司的架构师.技术VP或者CTO在交流时

微服务架构的基础框架选择:Spring Cloud还是Dubbo?

最近一段时间不论互联网还是传统行业,凡是涉及信息技术范畴的圈子几乎都在讨论微服务架构.近期也看到各大技术社区开始组织一些沙龙和论坛来分享Spring Cloud的相关实施经验,这对于最近正在整理Spring Cloud相关套件内容与实例应用的我而言,还是有不少激励的. 目前,Spring Cloud在国内的知名度并不高,在前阵子的求职过程中,与一些互联网公司的架构师.技术VP或者CTO在交流时,有些甚至还不知道该项目的存在.可能这也与国内阿里巴巴开源服务治理框架Dubbo有一定的关系,除了Dub

Spring Boot/Spring Cloud、ESB、Dubbo

如何使用Spring Boot/Spring Cloud 实现微服务应用spring Cloud是一个基于Spring Boot实现的云应用开发工具,它为基于JVM的云应用开发中的配置管理.服务发现.断路器.智能路由.微代理.控制总线.全局锁.决策竞选.分布式会话和集群状态管理等操作提供了一种简单的开发方式. Spring Cloud与Dubbo对比提到Dubbo,我想顺便提下ESB,目前央视新华社也在用ESB来做任务编排,这里先比较下Dubbo和ESB: ESB(企业数据总线),一般采用集中式

阿里Dubbo疯狂更新,关Spring Cloud什么事?

最近,开源社区发生了一件大事,那个全国 Java 开发者使用最广的开源服务框架 Dubbo 低调重启维护,并且 3 个月连续发布了 4 个维护版本. 我上次在写放弃Dubbo,选择最流行的Spring Cloud微服务架构实践与经验总结这篇文章的时候,就有很多的网友给我留言说,Dubbo 又开始更新了.我当然是清楚的,我也一直在关注着 Dubbo 的走向,在几个月前技术圈里面就有一个消息说是 Dubbo 又开始更新了,大家议论纷纷不知真伪.我还专门跑到 GitHub 上面进行了留言询问,最后在

微服务选择Spring Cloud还是Dubbo?

点击关注 异步图书,置顶公众号 每天与你分享 IT好书 技术干货 职场知识 参与文末话题讨论,每日赠送异步图书. --异步小编 在阿里巴巴的生态中,微服务逐渐成为主要的服务形态,伴随着容器化的日臻成熟,大量的分布式.领域驱动设计的微服务被快速开发和部署,服务间呈现出搭积木的能力,使不同的业务通过重新组合数个微服务,就能实现新的业务场景.借助成熟的底层集团中间件,天然地支持微服务所需的动态扩缩.服务发现.全链路日志分析等能力.以阿里巴巴达摩院语音对话平台为例,对话服务.理解服务.问答服务,以及对话

你真的了解微服务架构吗?听听八年阿里架构师怎样讲述Dubbo和Spring Cloud微服务架构

微服务架构是互联网很热门的话题,是互联网技术发展的必然结果.它提倡将单一应用程序划分成一组小的服务,服务之间互相协调.互相配合,为用户提供最终价值.虽然微服务架构没有公认的技术标准和规范或者草案,但业界已经有一些很有影响力的开源微服务架构框架提供了微服务的关键思路,例如Dubbo和Spring Cloud.各大互联网公司也有自研的微服务框架,但其模式都于这二者相差不大. 微服务主要的优势如下: 1.降低复杂度 将原来偶合在一起的复杂业务拆分为单个服务,规避了原本复杂度无止境的积累.每一个微服务专

转:比较spring cloud和dubbo,各自的优缺点是什么

原文:https://blog.csdn.net/u010664947/article/details/80007767 dubbo由于是二进制的传输,占用带宽会更少 springCloud是http协议传输,带宽会比较多,同时使用http协议一般会使用JSON报文,消耗会更大 dubbo的开发难度较大,原因是dubbo的jar包依赖问题很多大型工程无法解决 springcloud的接口协议约定比较自由且松散,需要有强有力的行政措施来限制接口无序升级 dubbo的注册中心可以选择zk,redis