微服务自从出现之后好像全世界都在谈论微服务,16年我刚听说“微服务”,我没有太上心,无非是将业务拆分部署,然后用http调用。但17年我实践dubbo和cloud之后发现服务调用不是http协议,dubbo和cloud各自有各自的服务监控,服务注册等等功能,异常丰富。仿佛一个全新的世界,我刚踏进去一只脚,对我的冲击,震撼可以想象出来。

目前,应用springcloud 的公司还不普遍,求职面试对springcloud也没有硬性要求。然而不少阿里系出来的人才在各公司开始应用dubbo,这也导致在国内dubbo的普及更广。

那么,当我们实施微服务架构,到底是应该用dubbo还是springcloud呢?

以下内容纯属个人见解,本人知识面有限,不对之处,多多包涵。

Part 1 背景

Dubbo,是阿里巴巴服务化治理的核心框架,并被广泛应用于阿里巴巴集团的各成员站点。阿里巴巴近几年对开源社区的贡献不论在国内还是国外都是引人注目的,RocketMq捐赠给apache并成为顶级项目,成为中国捐赠给apache(两百多个项目)的第四个开源项目,Druid连接池被誉为效率最高的数据库连接池框架等等,为国人挣足了面子。使阿里巴巴从一家电商公司上升为一家科技公司。

Springcloud拥有更强大的背景,spring社区更是Java企业界最有影响力的组织。

Part 2 源码维护力度

Dubbo曾一度停止维护,2017年再度开始更新。

Springcloud更新力度大,处于高速迭代的阶段。

Part 3 架构完整度

根据微服务架构在各方面的要素,看看Spring Cloud和Dubbo都提供了哪些支持。

这里写图片描述

Part 4 文档质量

Dubbo的文档可以说在国内开源框架中算是一流的,非常全,并且讲解的也非常深入,由于版本已经稳定不再更新,所以也不太会出现不一致的情况,另外提供了中文与英文两种版本,对于国内开发者来说,阅读起来更加容易上手,这也是dubbo在国内更火一些的原因吧。

Spring Cloud由于整合了大量组件,文档在体量上自然要比dubbo多很多,文档内容上还算简洁清楚,但是更多的是偏向整合,更深入的使用方法还是需要查看其整合组件的详细文档。另外由于Spring Cloud基于Spring Boot,很多例子相较于传统Spring应用要简单很多(因为自动化配置,很多内容都成了约定的默认配置),这对于刚接触的开发者可能会有些不适应,比较建议了解和学习Spring Boot之后再使用Spring Cloud,不然可能会出现很多一知半解的情况。

小结:虽然Spring Cloud的文档量大,但是如果使用Dubbo去整合其他第三方组件,实际也是要去阅读大量第三方组件文档的,所以在文档量上,我觉得区别不大。对于文档质量,由于Spring Cloud的迭代很快,难免会出现不一致的情况,所以在质量上我认为Dubbo更好一些。而对于文档语言上,Dubbo自然对国内开发团队来说更有优势。

Part 5 总结

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

从目前Spring Cloud的被关注度和活跃度上来看,很有可能将来会成为微服务架构的标准框架。所以,Spring Cloud的系列文章,我会继续写下去。也欢迎各位朋友一起交流,共同进步。

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐