微服务从小白到专家:Spring Cloud和Kubernetes实战
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

4.4 了解Spring Cloud

4.4.1 Spring Cloud简介

Spring Cloud是由Spring开源组织维护,并由众多业界知名公司参与贡献的微服务领域集大成之作。Spring Cloud项目提供了一系列的通用组件,用于快速搭建分布式应用的基础服务,包括服务注册与服务发现、配置管理、动态路由、服务间调用、负载均衡、熔断降级、分布式锁、链路追踪、消息总线和消息驱动等各种分布式场景用例。它基于Spring Boot搭建,可以在各种分布式环境中快速启动。

从2014年10月发布了Spring Cloud第一个里程碑版本1.0.0.M1后,Spring Cloud就以旺盛的活力保持着快速更新的节奏,不同于其他开源项目以数字作为版本号的惯例,Spring Cloud以字典序的英文单词作为大版本,在短短六年间已经发布了第八个里程碑大版本H版(本书选用Hoxton版,适用于实战项目),从表4-1中可以看出Spring Cloud社区的更新节奏。

表4-1 Spring Cloud的历史版本发布时间

除大版本外,Spring Cloud还有小版本的分支管理策略,如表4-2所示。

表4-2 Spring Cloud小版本的分支管理策略

通常,SR版本后面会有一个数字,比如SR2,这里的2代表着Release版本发布的第二个SR版本。

4.4.2 Spring Cloud和Spring Boot的关系

我们可以将Spring Boot看作一套快速搭建应用的脚手架,它使用了“约定大于配置”的理念,大幅降低了搭建应用的开发成本,通过内嵌Web容器可以实现简单部署。Spring Boot集成了很多底层技术框架(比如用来访问数据库的spring-data),我们可以在Spring Boot中找到搭建企业级应用所需的各种功能模块。从Spring社区为Spring Boot定义的宣传口号就可以看出它的特点:Build Anything——构建一切。

Spring Cloud的基础功能依赖于Spring Boot,可以把Spring Cloud看作一套构建在Spring Boot之上的微服务解决方案,通过Spring Cloud提供的服务治理、服务容错、配置管理、服务网关等组件,极大地简化了微服务架构下各个服务之间的协调和管理。Spring社区赋予Spring Cloud的口号便是:Coordinate Anything——协调一切。

Spring Cloud的特点如下:

• 采用“约定大于配置”的设计思想,简化了配置工作。

• 快速开发、快速部署上线。

• 组件丰富,技术选型自由度高。

• 组件插件化,组件之间相互耦合度很低,替换起来非常方便。

• 社区异常活跃,版本发布快,新功能和新组件层出不穷。

• 业界知名公司作为贡献者(Netflix和阿里),组件的性能和可用性已经在大公司业务中得到验证。

Spring Cloud和Spring Boot有一套严格的版本兼容关系,Spring Cloud的每个大版本都有其对应的Spring Boot版本兼容范围,具体的版本对应关系如表4-3所示。

表4-3 Spring Cloud与Spring Boot的版本搭配

在本书的微服务项目架构升级过程中,我们选择的Spring Cloud版本是Hoxton.SR 5,Spring Boot版本是2.2.1.RELEASE。