Java阿七 · 2019年12月17日

Spring Cloud简介,微服务架构,以及与Dubbo的详细比较

什么是Spring Cloud

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

为什么需要Spring Cloud

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

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

  • 配置管理
  • 服务注册与发现
  • 断路器
  • 智能路由
  • 服务间调用
  • 负载均衡
  • 微代理
  • 控制总线
  • 一次性令牌
  • 全局锁
  • 领导选举
  • 分布式会话
  • 集群状态
  • 分布式消息

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

微服务架构使用场景

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

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

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

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

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

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

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

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

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

file

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)架构完整度

file

上图可以看出,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的架构设计和实践步骤。

file

本文由博客一文多发平台 OpenWrite 发布!
推荐阅读
关注数
0
文章数
38
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息