开发者学堂课程【微服务框架 Spring Cloud 快速入门:Spring Cloud与Dubbo的区别对比】学习笔记与课程紧密联系,让用户快速学习知识
课程地址:https://developer.aliyun.com/learning/course/614/detail/9335
Spring Cloud与Dubbo的区别对比
目录
一、分布式与服务治理Dubbo详细步骤及介绍
二、SpringCloud与DUBBO的区别
三、总结Cloud与Dubbo
一、分布式与服务治理Dubbo详细步骤及介绍
Dubbo的使用:
应用服务化拆分+消息中间件:
基础架构和技术清单
总结:员工通过CDN再通过防火墙到达NGINX,NGINX负责覆盖均衡和转发、动静分离等等操作,通过LVS+Keepailved实现操作的可用,然后又在做服务器的加速器。分布式文件系统MogileFS FastDF,中阿里巴巴的系统是主要流行的,小图片不被允许保存至数据库,都要存放至分布式文件系统中。zookeeper和Dubbo一个负责服务的注册和发现,一个负责治理和调用,然后通过发布以后,根据接口和分流,接触了消息中间件ActiveMQ。数据被拷贝到了elasticasearch(分布式搜索引擎),然后使用阿里的mycat实现了分库和分表,同步了商品用户交易等等,进行读库水平拆分和写库垂直拆分。在mysql前有一层redis,保证redis的集群,我们使用了coids作为redis的解决方案,然后使用分布式完成了数据库的可用操作。
二、SpringCloud与DUBBO的区别
1. 活跃度:
选择一门技术的好坏,除了各种技术维度以及社区活跃度等等,最终需要使用数据来判断
dubbo的活跃度:
(1)https://github.com/dubbo
进入dubbo官网,展现如下效果:
图中信息可以反映出关于 dubbo 活跃度的曲线,基本都是平直的,所以dubbo的活跃程度很低。
(2)https://github.com/spring-cloud
进入 spring cloud 官网
图中信息反应出关于 spring cloud 活跃度的曲线基本是曲折的,所以 spring cloud 的活跃程度很高。
从未来的发展和社区活跃度可以使用 dubbo 和 spring cloud 的活跃程度来判断。
2. 对比结果
问:dubbo和spring cloud有什么重要的维度?
dubbo和spring cloud都是优秀的微服务解决方案
对比表格:
|
Dubbo |
Spring Cloud |
服务注册中心 |
Zookeeper |
Spring Cloud Netflix Eureka |
服务调用方式 |
RPC |
REST API |
服务监控 |
Dubbo-monitor |
Spring Boot Admain |
断路器 |
不完善 |
Spring Cloud Netflix Hystrix |
服务网关 |
无 |
Spring Cloud Netflix Zuul |
分布式配置 |
无 |
Spring Cloud Config |
服务跟踪 |
无 |
Spring Cloud Sleuth |
消息总线 |
无 |
Spring Cloud Bus |
数据流 |
无 |
Spring Cloud Stream |
批量任务 |
无 |
Spring Cloud Task |
…… |
|
|
(1)服务注册中心:Dubbo 使用的是 Zookeeper,Spring Cloud使用的是 Spring Cloud Netflix Eureka。
(2)服务调用方式:Dubbo 使用的是 RPC,Spring Cloud 使用的是 REST API。他们两者的调用方式不同,DUBBO 是远程调用RPC,而 Spring Cloud 是基于 APP 的 REST 风格。
(3)服务监控:Dubbo 使用的是 Dubbo-monitor,Spring Cloud 使用的是 Spring Boot Admain。
(4)断路器:随着 Dubbo 发展的技术维度越来越广泛,所以导致DUBBO的推迟力度越来越小,就导致了 DUBBO 断路器系统的不完善,而 Spring Cloud 使用的是 Spring Cloud Netflix Hystrix。
(5)服务网关:Dubbo 没有服务网关,而 Spring Cloud 使用的是Spring Cloud Netflix Zuul。
(6)分布式配置:Dubbo 没有分布式配置,而 Spring Cloud 使用的是Spring Cloud Config。
(7)服务跟踪:Dubbo 没有服务跟踪,而 Spring Cloud 使用的是Spring Cloud Sleuth。
(8)消息总线:Dubbo 没有消息总线,而 Spring Cloud 使用的是 Spring Cloud Bus。
(9)数据流:Dubbo 没有数据流,而Spring Cloud使用的是Spring Cloud Stream。
(10)批量任务:Dubbo 没有批量任务,而 Spring Cloud 使用的是Spring Cloud Task。
最大区别:SpringCloud 抛弃了 Dubbo 的 RPC 通信,采用的是基于HTTP的REST方式
严格来说,这两种方式各有优劣。虽然从一定程度上来说,后者牺牲了服务调用的性能,但也避免了上面提到的原生RPC带来的问题。而且 REST 相比 RPC 更为灵活,服务提供方和调用方的依赖只依靠—纸契约不存在代码级别的强依赖,这在强调快速演化的微服务环境下,显得更加合适。
品牌与组装机的区别:
Dubbo 由于没有自己的部分系统配置,所以只能够使用第三方的插件,而 SpringCloud 有自己完整的一套配置。
从表格中可以反映出,Spring Cloud 的功能比 DUBBO 更加强大,涵盖面更广,而且作为Spring的拳头项目,它也能够与 Spring FrameworkSpring Boot、Spring Data、Spring Batch 等其他Spring项目完美融合,这些对于微服务而言是至关重要的。使用Dubbo构建的微服务架构就像组装电脑,各环节我们的选择自由度很高,但是最终结果很有可能因为一条内存质量不行就发生问题;而 Spring Cloud 就像品牌机,在 Spring Source 的整合下,做了大量的兼容性测试,保证了机器拥有更高的稳定性,但是如果要在使用非原装组件外的东西,就需要对其基础有足够的了解。
社区支持和更新力度
最为重要的是,DUBBO 停止了5年左右的更新,虽然2017.7重启了。对于技术发展的新需求,需要由开发者自行拓展升级(比如当当网弄出了DubboX),这对于很多想要采用微服务架构的中小软件组织,显然是不太合适的,中小公司没有这么强大的技术能力去修改Dubbo 源码+周边的一整套解决方案,并不是每一个公司都有高技术性人才和真实的线上生产环境测试过。
三、总结Cloud与Dubbo
问题:
曾风靡国内的开源 RPC 服务框架 Dubbo 在重启维护后,令许多用户为之雀跃,但同时,也迎来了一些质疑的声音。互联网技术发展迅速,Dubbo 是否还能跟上时代? Dubbo 与 Spring Cloud 相比又有何优势和差异?是否会有相关举措保证Dubbo的后续更新频率? //技术分享
人物:Dubbo 重启维护开发的刘军,主要负责人之一
刘军,阿里巴巴中间件高级研发工程师,主导了 Dubbo 重启维护以后的几个发版计划,专注于高性能 RPC 框架和微服务相关领域。曾负责网易考拉 RPC 框架的研发及指导在内部使用,参与了服务治理平台分布式跟踪系统、分布式一致性框架等从无到有的设计与开发过程。
问:目前 Dubbo 被拿来比较最多的就是 Spring Cloud ,如何看待二者的关系,业务上是否有所冲突?
答:关于 Dubbo 和 Spring Cloud 间的关系,首先要明确的—点是Dubbo 和 springcloud 并不是完全的竞争关系,两者所解决的问题域并不—样:Dubbo的定位始终是—款 RPC 框架,而 Spring Gloud的目标是微服务架构下的—站式解决方案。如果非要比较的话, Dubbo 可以类比到 Nerflix oss 技术栈,而 Spring cloud 集成了Netflix OSS 作为分布式服务治理解决方案,但除此之外 Springcloud 还提供了包括 config、stream、security、sleuth 等等分布式问题解决方案。
Spring Cloud 比 Dubbo 更加的广泛
当前由于 RPC 协议、注册中心元数据不匹配等问题,在面临微服务基础框架选型时 Dubbo与Spring Cloud 是只能二选—,这也是为什么用户总是拿 Dubbo 和 Spring cloud 做对比的原因之—。Dubbo 之后会积极寻求适配到 SpringCloud 生态,比如作为 Spring Cloud 的二进制通信方案来发挥 Dubbo 的性能优势,或者 Dubbo 通过模块化以及对 http 的支持适配到 Spring Cloud 。