
1.4 Spring Cloud版本说明
1.4.1 Spring Cloud的版本号
在Spring团队和世界各国程序员一年多的努力下,Spring Cloud及其各个组件的版本大致已有7个。Spring Cloud的版本号并不是我们常用的数字版本号,而是一个名称代号,这些代号据说是根据伦敦地铁命名的,分别是Angel、Brixton、Camden、Dalston、Edgware、Finchley,Greenwich。其中Greenwich是本书编写时最新的稳定版本。
Spring Cloud的版本名称,通常是由“版本号+小版本名称”组成的。这样设计的目的是为了更好地管理每个Spring Cloud子项目的清单,避免自己的版本号与子项目的版本号混淆。例如,Finchley M1版本中,Finchley代表的是版本号,M1是小版本名称。在Spring Cloud的版本中,每个版本里面包含很多小版本,这些小版本使用不同的标识符号来表示版本的状态。常见的版本标识号具体如下。
(1)SNAPSHOT:快照版本,可能会被修改。
(2)M(MileStone):里程碑版本,M1表示第一个里程碑版本。一般同时标注PRE,表示预览版本。
(3)SR(Service Release):表示正式版本。如果正式版有多个,就使用数字标识不同的正式版本。例如SR1表示第一个正式版本。同时一般会标注GA(GenerallyAvailable),表示稳定版本。
需要说明的是,Spring Cloud各个版本之间的组件变化不会很大,只有一些细节略有不同,例如配置项名称、新版本增加的新配置方式等。日常开发选择组件版本时最好根据Spring Cloud版本查询对应组件,否则很有可能会导致版本不匹配。也就是说,选择Spring Cloud版本与各个组件版本时要以兼容为第一要务。
1.4.2 Spring Cloud与Spring Boot的兼容性
通过前面的学习,大家应该知道Spring Cloud是基于Spring Boot开发的。Spring Boot专注于快速、方便集成单个微服务架构,而Spring Cloud是关注全局的服务治理框架。Spring Cloud依赖于Spring Boot。
由于Spring Cloud和Spring Boot都发布了多个版本,选择这些版本时需要考虑兼容性。表1-1描述了Spring Cloud与Spring Boot版本的匹配关系。
表1-1 Spring Cloud与Spring Boot版本的匹配关系

注意:
在实际操作中,选择Spring Boot与Spring Cloud版本时,没有限制必须使用某一版本,一般标注GA的版本都可以使用。但有一点要注意,Spring Cloud版本一定要与Spring Boot版本兼容,以兼容为第一要务。本书使用的Spring Cloud版本是Greenwich SR*,Spring Boot版本是2.1.*。
多学一招:Spring Cloud与Dubbo的比较
Dubbo和Spring Cloud都属于微服务架构,其中Dubbo是阿里巴巴服务管理的核心框架,后期被当当网改良。从Spring Cloud的命名我们就可以知道,它是Spring家族的产物,Spring社区可以说是Java企业界最有影响力的组织了,其中Netflix公司开源的整套微服务架构套件是Spring Cloud的核心。接下来,我们通过表1-2比较Spring Cloud与Dubbo的特性。
表1-2 Spring Cloud与Dubbo核心组件的比较

在表1-2中,Spring Cloud的组件明显比Dubbo的组件更加完善,其原因就是Spring Cloud是Spring的产物,而且世界各国的程序员都在不断完善Spring Cloud,但Dubbo只有当当网在改良。除此之外,Dubbo的服务通信方式是基于TCP的远程过程调用(Remote Procedure Call,RPC)协议,而Spring Cloud基于REST。从代码依赖性来看,基于REST的Spring Cloud不存在代码级别的强依赖,相对于RPC更加灵活,具有能够更好处理微服务架构解耦性的特点。