• 欢迎访问 优知学院 请加入我们的架构交流分享群优知学院-架构师进阶
  • 坚持原创分享BAT面试+架构+CTO进阶干货!

阿里P8架构师谈:Spring Cloud简介,微服务架构,以及与Dubbo的详细比较

阿里P8架构师谈:SpringClound的特点和架构,以及同类微服务比较

什么是Spring Cloud

Spring Cloud 是一套完整的微服务解决方案,基于 Spring Boot 框架,准确的说,它不是一个框架,而是一个大的容器,它将市面上较好的微服务框架集成进来,从而简化了开发者的代码量。

为什么需要Spring Cloud

Spring Cloud 是整个 Spring 家族中新的成员,要致力于分布式系统、云服务的框架。

Spring Cloud 为开发人员提供了快速构建分布式系统中一些常见模式的工具,例如:

  1. 配置管理
  2. 服务注册与发现
  3. 断路器
  4. 智能路由
  5. 服务间调用
  6. 负载均衡
  7. 微代理
  8. 控制总线
  9. 一次性令牌
  10. 全局锁
  11. 领导选举
  12. 分布式会话
  13. 集群状态
  14. 分布式消息

一句话概括Spring Cloud是分布式微服务架构下的一站式解决方案,是各个微服务架构落地技术集合,俗称微服务全家桶

微服务架构使用场景

首先,我们需要看看一般的微服务架构需要的功能或使用场景:

1、我们把整个系统根据业务拆分成几个子系统。

2、每个子系统可以部署多个应用,多个应用之间使用负载均衡。

3、需要一个服务注册中心,所有的服务都在注册中心注册,负载均衡也是通过在注册中心注册的服务来使用一定策略来实现。

4、所有的客户端都通过同一个网关地址访问后台的服务,通过路由配置,网关来判断一个URL请求由哪个服务处理。请求转发到服务上的时候也使用负载均衡。

5、服务之间有时候也需要相互访问。例如有一个用户模块,其他服务在处理一些业务的时候,要获取用户服务的用户数据。

6、需要一个断路器,及时处理服务调用时的超时和错误,防止由于其中一个服务的问题而导致整体系统的瘫痪。

7、还需要一个监控功能,监控每个服务调用花费的时间等。

总之,Spring Cloud只是微服务架构的一种解决方案,下面我们再看看微服务架构同类产品比较。

SpringCloud与同类Dubbo微服务比较

目前市面上主要就是SpringCloud VS Dubbo。

1.Spring Cloud的优缺点

Spring Cloud主要优点:

  • 集大成者,Spring Cloud 包含了微服务架构的方方面面。
  • 约定优于配置,基于注解,没有配置文件。
  • 轻量级组件,Spring Cloud 整合的组件大多比较轻量级,且都是各自领域的佼佼者。
  • 开发简便,Spring Cloud 对各个组件进行了大量的封装,从而简化了开发。
  • 开发灵活,Spring Cloud 的组件都是解耦的,开发人员可以灵活按需选择组件。

Spring Cloud的缺点:

  • 项目结构复杂,每一个组件或者每一个服务都需要创建一个项目。
  • 部署门槛高,项目部署需要配合 Docker 等容器技术进行集群部署,而要想深入了解 Docker,学习成本高。

2.Spring Cloud 对比Dubbo

Dubbo,是阿里巴巴服务化治理的核心框架,并被广泛应用于阿里巴巴集团的各成员站点。

1)社区活跃度

在社区活跃度上,Spring Cloud毋庸置疑的优于Dubbo,这对于没有大量精力与财力维护这部分开源内容的团队来说,Spring Cloud会是更优的选择。

2)架构完整度

阿里P8架构师谈:SpringClound的特点和架构,以及同类微服务比较

上图可以看出,Spring Cloud 比较全面,Spring Cloud下面有17个子项目(可能还会新增)分别覆盖了微服务架构下的方方面面,服务治理只是其中的一个方面。

而 Dubbo 由于只实现了服务治理,需要集成其他模块,需要单独引入,增加了学习成本和集成成本。一定程度来说,Dubbo只是Spring Cloud Netflix中的一个子集。

3)文档质量

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

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

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

3.对比总结

通过上面再几个环节上的分析,相信大家对Dubbo和Spring Cloud有了一个初步的了解。

就我个人对这两个框架的使用经验和理解,打个不恰当的比喻:

使用Dubbo构建的微服务架构就像组装电脑,各环节我们的选择自由度很高,但是最终结果很有可能因为一条内存质量不行就点不亮了,总是让人不怎么放心,但是如果你是一名高手,那这些都不是问题。

而Spring Cloud就像品牌机,在Spring Source的整合下,做了大量的兼容性测试,保证了机器拥有更高的稳定性,但是如果要在使用非原装组件外的东西,就需要对其基础有足够的了解。


以上就是Spring Cloud的介绍,后续详解Spring Cloud的架构设计和实践步骤。

阿里P8架构师谈:SpringClound的特点和架构,以及同类微服务比较

本文标题:阿里P8架构师谈:Spring Cloud简介,微服务架构,以及与Dubbo的详细比较
转载请保留页面地址:http://youzhixueyuan.com/spring-clound-from-entry-to-mastery.html
喜欢 (12)
[mike.r.chen@163.com]
分享 (0)
优知学院陈睿
关于作者:
优知学院创始人,13年互联网从业经验,资深架构设计经验,曾就职于淘宝、盛大、百度、携程,历程高级研发工程师、架构师、研发经理、事业部CTO。
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址