[SpringCloud系列004] SpringCloud和dubbo有哪些区别?

[SpringCloud系列004] SpringCloud和dubbo有哪些区别?原https://blog.csdn.net/anningzhu/article/details/76599875一.两者的模块组成:1、Dubbo主要分为服务注册中心,服务提供者,服务消费者,还有管控中心;2、相比起Dubbo简单的四个模块,SpringCloud则是一个完整的分布式一站式框架,他有着一样的服务注册中心,服务提供者,服务消费者,管控台,断路器,分布式配置服务,消息总线,…

大家好,又见面了,我是你们的朋友全栈君。

原 https://blog.csdn.net/anningzhu/article/details/76599875
一.两者的模块组成:

1、Dubbo主要分为服务注册中心,服务提供者,服务消费者,还有管控中心;

2、相比起Dubbo简单的四个模块,SpringCloud则是一个完整的分布式一站式框架,他有着一样的服务注册中心,服务提供者,服务消费者,管控台,断路器,分布式配置服务,消息总线,以及服务追踪等;

二.在性能上来说
由于Dubbo底层是使用Netty这样的NIO框架,是基于TCP协议传输的,配合以Hession序列化完成RPC。而SpringCloud是基于Http协议+rest接口调用远程过程的,相对来说,Http请求会有更大的报文,占的带宽也会更多。

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

分布式配置:可以使用淘宝的diamond、百度的disconf来实现分布式配置管理。但是Spring Cloud中的Config组件除了提供配置管理之外,由于其存储可以使用git,因此它天然的实现了配置内容的版本管理,可以完美的与应用版本管理整合起来。
服务跟踪:可以使用京东开源的Hydra
批量任务:可以使用当当开源的Elastic-Job
……
虽然,Dubbo自身只是实现了服务治理的基础,其他为保证集群安全、可维护、可测试等特性方面都没有很好的实现,但是几乎大部分关键组件都能找到第三方开源来实现,这些组件主要来自于国内各家大型互联网企业的开源产品。

RPC vs REST

另外,由于Dubbo是基础框架,其实现的内容对于我们实施微服务架构是否合理,也需要我们根据自身需求去考虑是否要修改,比如Dubbo的服务调用是通过RPC实现的,但是如果仔细拜读过Martin Fowler的 microservices 一文,其定义的服务间通信是HTTP协议的REST API。那么这两种有何区别呢?

先来说说,使用Dubbo的RPC来实现服务间调用的一些痛点:

服务提供方与调用方接口依赖方式太强:我们为每个微服务定义了各自的service抽象接口,并通过持续集成发布到私有仓库中,调用方应用对微服务提供的抽象接口存在强依赖关系,因此不论开发、测试、集成环境都需要严格的管理版本依赖,才不会出现服务方与调用方的不一致导致应用无法编译成功等一系列问题,以及这也会直接影响本地开发的环境要求,往往一个依赖很多服务的上层应用,每天都要更新很多代码并install之后才能进行后续的开发。若没有严格的版本管理制度或开发一些自动化工具,这样的依赖关系会成为开发团队的一大噩梦。而REST接口相比RPC更为轻量化,服务提供方和调用方的依赖只是依靠一纸契约,不存在代码级别的强依赖,当然REST接口也有痛点,因为接口定义过轻,很容易导致定义文档与实际实现不一致导致服务集成时的问题,但是该问题很好解决,只需要通过每个服务整合swagger,让每个服务的代码与文档一体化,就能解决。所以在分布式环境下,REST方式的服务依赖要比RPC方式的依赖更为灵活。
服务对平台敏感,难以简单复用:通常我们在提供对外服务时,都会以REST的方式提供出去,这样可以实现跨平台的特点,任何一个语言的调用方都可以根据接口定义来实现。那么在Dubbo中我们要提供REST接口时,不得不实现一层代理,用来将RPC接口转换成REST接口进行对外发布。若我们每个服务本身就以REST接口方式存在,当要对外提供服务时,主要在API网关中配置映射关系和权限控制就可实现服务的复用了。
相信这些痛点也是为什么当当网在dubbox(基于Dubbo的开源扩展)中增加了对REST支持的原因之一。

小结:Dubbo实现了服务治理的基础,但是要完成一个完备的微服务架构,还需要在各环节去扩展和完善以保证集群的健康,以减轻开发、测试以及运维各个环节上增加出来的压力,这样才能让各环节人员真正的专注于业务逻辑。而Spring Cloud依然发扬了Spring Source整合一切的作风,以标准化的姿态将一些微服务架构的成熟产品与框架揉为一体,并继承了Spring Boot简单配置、快速开发、轻松部署的特点,让原本复杂的架构工作变得相对容易上手一些(如果您读过我之前关于Spring Cloud的一些核心组件使用的文章,应该能体会这些让人兴奋而激动的特性,传送门)。所以,如果选择Dubbo请务必在各个环节做好整套解决方案的准备,不然很可能随着服务数量的增长,整个团队都将疲于应付各种架构上不足引起的困难。而如果选择Spring Cloud,相对来说每个环节都已经有了对应的组件支持,可能有些也不一定能满足你所有的需求,但是其活跃的社区与高速的迭代进度也会是你可以依靠的强大后盾。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/143765.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • painless数字类型转换_painless获取doc字段的方式「建议收藏」

    如果你写painless脚本的时候,发现对不同结构的字段获取有点困惑,那么本文可能会帮助你。取普通字段默认ES会把非text、非nested的字段存到docvalues列存储中,方便单独获取,而不用取_source里取,这样IO性能就很好。假设你有一个字段:”a”:1。那么doc[‘a’]返回的是[1],是一个数组。doc[‘a’].value返回的是1,也就是取第一个元素。doc[‘a’]….

    2022年4月17日
    64
  • 分类模型评估方法_政策评估的模型与方法

    分类模型评估方法_政策评估的模型与方法上图矩阵中1是正例,0是只负例对于二分类问题,可以将真实类别和分类器预测类别组合为:真正例(truepositiveTP):真实类别为正例,预测类别为正例;假正例(falsepositiveFP):真实类别为负例,预测类别为正例;假负例(falsenegativeFN):真实类别为正例,预测类别为负例;真负例(truenegativeTN):真实类别为负例,预测类别为负例;分类模…

    2022年9月27日
    2
  • 智能小车设计规划_智能循迹避障小车设计

    智能小车设计规划_智能循迹避障小车设计摘要该课题主要基于单片机的循迹、避障、WiFi、蓝牙等功能的智能小车,在一些特殊环境下有着特殊的意义。硬件控制以arduino为控制核心。采用超声波避障和红外避障传感器共同完成寻迹、避障功能,并将相关信号传送给单片机,经单片机控制系统分析判断后控制驱动芯片驱动直流电机实现小车前进、后退、左转、右转,停止。软件采用移植性较好的c语言编写,通过手机蓝牙App实现对智能小车的控制。通过TCP/UD协…

    2022年10月18日
    3
  • systemproperties_安卓system下载

    systemproperties_安卓system下载该楼层疑似违规已被系统折叠隐藏此楼查看此楼android状态栏点击右上角锁屏教程1.反编辑systemUI.apk2.打开res\layout的status_bar.xml3.查找字符这段代码的上面一行加入以下代码android:layout_gravity=”right”androidrientation=”vertical”android:id=”@id/home”android:lay…

    2026年1月20日
    5
  • 微信裂变推广_朋友圈转发送红包营销

    微信裂变推广_朋友圈转发送红包营销维信超级引流红包裂变游戏源码维信超级引流红包裂变游戏源码,H5拆红包源码强制分享朋友圈,可以强制分享两次朋友圈、三个群,分享成功后自动跳转到你的广告页面,访客点击返回跳转广告页面,可以强制分享两次朋友圈,三个群,分享成功后自动跳转到你的广告页面,访客点击返回跳转广告页面。2022超级热门引流红包裂变微信分享朋友圈广告游戏源码-PHP文档类资源-CSDN下载微信超级引流红包裂变游戏源码微信超级引流红包裂变游戏源码,H5拆红包源码强制分享朋友圈,可以更多下载资源、学习资料请访问CSDN下载频道.ht

    2026年1月19日
    4
  • placeholder的样式设置

    placeholder的样式设置在input框中有时想将输入的字和placeholder设为不同的颜色或其它效果,这时就可以用以下代码来对placeholder进行样式设置了。::-webkit-input-placeholder

    2022年7月4日
    30

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号