微服务选择Spring Cloud还是Dubbo?

Posted 异步图书

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了微服务选择Spring Cloud还是Dubbo?相关的知识,希望对你有一定的参考价值。

每天与你分享 IT好书 技术干货 职场知识

参与文末话题讨论,每日赠送异步图书。

——异步小编

在阿里巴巴的生态中,微服务逐渐成为主要的服务形态,伴随着容器化的日臻成熟,大量的分布式、领域驱动设计的微服务被快速开发和部署,服务间呈现出搭积木的能力,使不同的业务通过重新组合数个微服务,就能实现新的业务场景。借助成熟的底层集团中间件,天然地支持微服务所需的动态扩缩、服务发现、全链路日志分析等能力。以阿里巴巴达摩院语音对话平台为例,对话服务、理解服务、问答服务,以及对话管理平台都是基于SpringBoot和Docker技术栈的。

微服务应该具备的功能

微服务,可以拆分为“微”和“服务”二字。“微”即小的意思,那到底多小才算“微”呢?可能不同的团队有不同的答案。从参与微服务的人数来讲,单个微服务从架构设计、代码开发、测试、运维的人数加起来是8~10人才算“微”。那么何为“服务”呢?按照“微服务”概念提出者Martin Fowler给出的定义:“服务”是一个独立运行的单元组件,每个单元组件运行在独立的进程中,组件与组件之间通常使用HTTP这种轻量级的通信机制进行通信。

微服务具有以下的特点。

  • 按照业务来划分服务,单个服务代码量小,业务单一,易于维护。

  • 每个微服务都有自己独立的基础组件,例如数据库、缓存等,且运行在独立的进程中。

  • 微服务之间的通信是通过HTTP协议或者消息组件,且具有容错能力。

  • 微服务有一套服务治理的解决方案,服务之间不耦合,可以随时加入和剔除服务。单个微服务能够集群化部署,并且有负载均衡的能力。

  • 整个微服务系统应该有一个完整的安全机制,包括用户验证、权限验证、资源保护等。

  • 整个微服务系统有链路追踪的能力。

  • 有一套完整的实时日志系统。

微服务具有以上这些特点,那么微服务需要具备一些什么样的功能呢?微服务的功能主要体现在以下几个方面。

  • 服务的注册和发现。

  • 服务的负载均衡。

  • 服务的容错。

  • 服务网关。

  • 服务配置的统一管理。

  • 链路追踪。

  • 实时日志。

Dubbo

阿里巴巴在2011年开源了Dubbo框架,虽然在2013年停止更新,但在2017年9月又重启维护并发布了新版本。目前已有很多的公司将自己的业务建立在Dubbo之上,同时阿里云也推出了企业级分布式应用服务EDAS,为Dubbo提供应用托管。

Dubbo采用Zookeeper作为注册中心,RPC作为服务调用方式,致力于提供高性能和透明化的RPC远程服务调用方案。它与Spring无缝集成,基于服务提供方(服务端)与服务调用方(客户端)角色构建简单模型,其优点是使用方便、学习成本低。



① 服务提供方发布服务到服务注册中心。

② 服务消费方从服务注册中心订阅服务。

③ 注册中心通知消息调用方服务已注册。

④ 服务消费方调用已经注册的可用服务。

⑤ 监控计数。

Spring Cloud

Spring Cloud基于Spring Boot实现,使用HTTP的RESTful风格API作为调用方式。它所包含的多个子项目共同构建了微服务架构体系。

微服务选择Spring Cloud还是Dubbo?

Netflix Eureka

Spring Cloud 的服务注册中心提供服务注册、服务发现、负载均衡等功能。


Netflix Hystrix

当某个服务发生故障之后,则触发熔断机制(Hystrix)向服务调用方返回结果标识错误,而不是一直等待服务提供方返回结果,这样就不会使得线程因调用故障服务而被长时间占用不释放,避免了故障在分布式系统中的蔓延。


Netflix Zuul

代理各模块提供的服务,统一暴露给第三方应用。提供动态路由、监控、弹性、全等的边缘服务。


Config Server

分布式架构下多微服务会产生非常多的配置文件,分布式配置中心(Config Server)将所有配置文件交由GIT或SVN进行统一管理,避免出错。


Spring Boot

在使用Spring开发时,通常需要完成Spring框架及其他第三方工具配置文件的编写,非常麻烦。Spring Boot通过牺牲项目的自由度来减少配置的复杂度,约定一套规则,把这些框架都自动配置集成好,从而达到“开箱即用”。

Spring Clould与Dubbo比较

首先从微服务关注点来比较Spring Cloud和Dubbo两大服务框架,如表1所示。

表1 从微服务关注点比较Spring Cloud和Dubbo

微服务关注点 Spring Cloud Dubbo

配置管理

Config

服务发现

Eureka、Consul、Zookeeper

Zookeeper

负载均衡

Ribbon

自带

网关

Zuul

分布式追踪

Spring Cloud Sleuth

容错

Hystrix

不完善

通信方式

HTTP、Message

RPC

安全模块

Spring Cloud Security

Spring Cloud拥有很多的项目模块,包含了微服务系统的方方面面。Dubbo是一个非常优秀的服务治理和服务调用框架,但缺少很多功能模块,例如网关、链路追踪等。在项目模块上,Spring Cloud占据着更大的优势。

Spring Cloud的更新速度非常块,Camden.SR5版本发布于2017年2月6日,Camden.SR6版本发布于2017年3月10日,Dalston版本发布于2017年4月12日,基本每个月会发一次版本的迭代。从GitHub的代码仓库来看,Spring Cloud几乎每天都有更新。阿里巴巴于2011年10月开源了Dubbo,开源后的Dubbo发展迅速,大概每2~3个月有一次版本更新。然而,从在2013年3月开始,Dubbo暂停了版本更新,并只在2014年10月发布了一个小版本,修复了一个bug,之后长期处于版本停止更新的状态。直到2017年9月,阿里巴巴中间件部门重新组建了Dubbo团队,把Dubbo列为重点开源项目,并在2017年9~11月期间,一直保持每月一次版本更新的频率。

从学习成本上考虑,Dubbo的版本趋于稳定,文档完善,可以即学即用,没有太大难度。Spring Cloud 基于Spring Boot开发,需要开发者先学会Spring Boot。另外,Spring Cloud版本迭代快,需要快速跟进学习。Spring Cloud文档大多是英文的,要求学习者有一定的英文阅读能力。此外,Spring Cloud文档很多,不容易快速找到相应的文档。

从开发风格上来讲,Dubbo 更倾向于Spring Xml的配置方式,Dubbo官方也推荐这种方式。Spring Cloud基于Spring Boot,Spring Boot采用的是基于注解和JavaBean配置方式的敏捷开发。从开发速度上讲,Spring Cloud具有更高的开发和部署速度。

最后,Spring Cloud 的通信方式大多数是基于HTTP Restful风格的,服务与服务之间完全无关、无耦合。由于采用的是HTTP Rest,因此服务无关乎语言和平台,只需要提供相应API接口,就可以相互调用。Dubbo 的通信方式基于远程调用,对接口、平台和语言有强依赖性。如果需要实现跨平台调用服务,需要写额外的中间件,这也是Dubbo存在的原因。

Dubbo和Spring Cloud拥有各自的优缺点。Dubbo更易上手,并且广泛使用于阿里巴巴的各大站点,经历了“双11”期间高并发、大流量的检验,Dubbo框架非常成熟和稳定。Spring Cloud服务框架严格遵守Martin Fowler 提出的微服务规范,社区异常活跃,它很可能成为微服务架构的标准。

微服务必读书

《深入理解Spring Cloud与微服务构建 

方志朋 著

 点击封面购买纸书

CSDN博客专家、Spring Cloud中国社区联合创始人全新作品。

本书共分16章,全面涵盖了Spring Cloud构建微服务相关的知识点。第1、2章详细介绍了微服务架构和Spring Cloud。第3、4章讲解了用Spring Cloud构建微服务的准备工作。第5~12章以案例为切入点,讲解了Spring Cloud构建微服务的基础组件,包括Eureka、Ribbon、Feign、Hystrix、Zuul、Config、Sleuth、Admint等组件。第13~15章讲述了使用Spring Cloud OAuth2来保护微服务系统的相关知识。第16章用一个综合案例,全面讲解了如何使用Spring Cloud构建微服务,可以作为实际开发的样例工程。

《微服务分布式构架开发实战

龚鹏 著 

点击封面购买纸书

为了更快地实施微服务,本书基于开源且稳定的第三方工具,介绍如何构建一个庞大且复杂的分布式系统,用于满足项目中的实际需求。每一个工具库为了适应更丰富的使用场景,通常都会把部分参数以配置文件的方式暴露出来,同时提供用于开发环境的默认配置。本书基于快速使用为主线路,尽可能多地讲解配置参数的意义及之间的关系。在掌握足够多的知识点后建立起对微服务分布式架构的认知,以便为探求更深层次的知识点做好铺垫。

本书适合Java工程师、初级架构师、大中专院校相关专业师生、Java培训班学员及独立开发者与自学读者使用。

今日互动


微服务选择Spring Cloud还是Dubbo?

推荐阅读

长按二维码,可以关注我们哟

每天与你分享IT好文。


异步图书”后台回复“关注”,即可免费获得2000门在线视频课程;推荐朋友关注根据提示获取赠书链接,免费得异步e读版图书一本。赶紧来参加哦!

扫一扫上方二维码,回复“关注”参与活动!


点击阅读原文,直接购买微服务图书

以上是关于微服务选择Spring Cloud还是Dubbo?的主要内容,如果未能解决你的问题,请参考以下文章

赠书福利丨微服务架构的基础框架选择:Spring Cloud还是Dubbo?

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

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

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

采用Dubbo?还是Spring Cloud

微服务架构框架选择:Spring Cloud 和 Dubbo对比