前言
北京时间2021-12-01,Spring Cloud 2021.0.0
正式发布。话说,2021年都快过完了呀,怎么才第一个版本呢?如果对比去年2020.0.0版本发布时间是2020-12-22的话,发现还是有“进步”的哈。
其实,Spring Cloud的发版速度慢是必然的,因为它下面的子项目实在太多了,并不像Spring Boot那样来得纯粹很好掌控。每个子项目都有自己的发版节奏,Spring Cloud协调融合在一起,还要依托于Spring Boot的版本升级而升级,需要做兼容测试,很难的呀!
Spring Cloud 2021.0.0版本的pom依赖:
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>2021.0.0</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
值得注意的是,Spring Boot版本请使用2.6.1及以上,而非2.6.0。
尴尬不,这和Spring Cloud 2020.0.0依赖的最低Spring Boot版本为2.5.1而非2.5.0如出一辙。即使强如Spring技术团队都会因为bug导致出现这种“对不齐”的现象,洁癖患者看着着实有点小难受有木有。所以,程序员平时多多宽容自己O(∩_∩)O
关于Spring Cloud,每每都有些老生常谈的议题,很基础,但又不得不知,不得不提。
Spring Cloud作为云计算框架,以Spring Boot作为基石,因此它和Spring Boot的版本对应关系非常重要。
这是官方给出的对应关系图:
我把它整理为更为详细的表格:
Release Train | 发布时间 | Spring Boot版本 | SC Commons版本 |
---|---|---|---|
2021.0.x | 2021-12 | 2.6.x | 3.1.0 |
2020.0.x | 2020-12 | 2.4.x,2.5.x(从2020.0.3起) | 3.0.0 |
Hoxton | 2019-07 | 2.2.x, 2.3.x (从SR5起) | 2.2.x |
Greenwich | 2018-11 | 2.1.x | 2.1.x |
Finchley | 2017-10 | 2.0.x | 2.0.x |
Edgware | 2017-08 | 1.5.x | 1.3.x |
Dalston | 2017-05 | 1.5.x | 1.2.x |
Brixton | 2016-09 | 1.3.x | 1.1.x |
Angel | 2016-05 | 1.2.x | 1.0.x |
按目前节奏,Spring Boot每年发布2个中版本、一个大版本升级,Spring Cloud保持每年一次大版本升级的用以匹配节奏。
Spring Cloud管理着众多功能组件,整体上分为几大类。从源码处这里可以看出,以2021.0.0版本为例:
笔者制作成表格,方便你收藏:
模块 | 版本 | 核心组件 |
---|---|---|
spring-cloud-commons-dependencies | 3.1.0 | spring-cloud-commons spring-cloud-contextspring-cloud-loadbalancerspring-cloud-starter |
spring-cloud-netflix-dependencies | 3.1.0 | spring-cloud-starter-netflix-eureka-clientspring-cloud-starter-netflix-eureka-server |
spring-cloud-openfeign-dependencies | 3.1.0 | spring-cloud-starter-openfeignfeign-bom:11.7feign-form-spring:3.8.0 |
spring-cloud-gateway-dependencies | 3.1.0 | spring-cloud-gateway-webfluxspring-cloud-gateway-mvcspring-cloud-gateway-serverspring-cloud-starter-gateway |
spring-cloud-circuitbreaker-dependencies | 2.1.0 | resilience4j-bom:1.7.0spring-cloud-starter-circuitbreaker-resilience4jspring-cloud-starter-circuitbreaker-reactor-resilience4j |
spring-cloud-config-dependencies | 3.1.0 | spring-cloud-starter-configspring-cloud-config-clientspring-cloud-config-serverspring-cloud-config-monitor |
spring-cloud-stream-dependencies | 3.2.1 | spring-cloud-streamspring-cloud-stream-binder-kafka-streamsspring-cloud-starter-stream-rabbit |
spring-cloud-task-dependencies | 2.4.0 | spring-cloud-starter-taskspring-cloud-task-batchspring-cloud-task-stream |
spring-cloud-consul-dependencies | 3.1.0 | spring-cloud-starter-consulspring-cloud-starter-consul-busspring-cloud-starter-consul-configspring-cloud-starter-consul-discoveryspring-cloud-starter-consul-all |
spring-cloud-sleuth-dependencies | 3.1.0 | spring-cloud-sleuth-bravespring-cloud-sleuth-zipkispring-cloud-starter-sleuth |
spring-cloud-zookeeper-dependencies | spring-cloud-zookeeper-configspring-cloud-zookeeper-discoveryspring-cloud-starter-zookeeper-all | |
spring-cloud-cloudfoundry-dependencies | 3.1.0 | spring-cloud-cloudfoundry-discoveryspring-cloud-starter-cloudfoundry |
spring-cloud-bus-dependencies | 3.1.0 | spring-cloud-starter-bus-amqpspring-cloud-starter-bus-kafkaspring-cloud-starter-bus-stream |
spring-cloud-contract-dependencies | 3.1.0 | spring-cloud-contract-wiremockspring-cloud-contract-specspring-cloud-contract-spec-java<spring-cloud-contract-spec-kotlinspring-cloud-contract-stub-runner |
spring-cloud-function-dependencies | 3.2.1 | spring-cloud-function-contextspring-cloud-starter-function-webspring-cloud-starter-function-webfluxspring-cloud-function-deployerspring-cloud-function-adapter-awsspring-cloud-function-adapter-azurespring-cloud-function-adapter-gcpspring-cloud-function-adapter-openwhisk |
spring-cloud-vault-dependencies | 3.1.0 | spring-cloud-vault-config-awsspring-cloud-vault-config-consulspring-cloud-vault-config-databasespring-cloud-vault-config-rabbitmq |
spring-cloud-kubernetes-dependencies | 3.1.0 | kubernetes-client-bom:5.9.0io.kubernetes:client-java:13.0.0io.kubernetes:client-java-spring-integration:13.0.0istio-clientspring-cloud-kubernetes-client-configspring-cloud-kubernetes-client-discoveryspring-cloud-kubernetes-fabric8-istiospring-cloud-kubernetes-fabric8-loadbalancerspring-cloud-starter-kubernetes-fabric8-all |
发现没,如果团队正在使用kubernetes,那么spring-cloud-kubernetes
也将是不错的解决方案哦,类似于Netflix的全家桶嘛。
Pivotal公司(Spring的母公司)对核心产品有个OSS
支持协议,简而言之:主要版本提供3年支持,Spring Cloud作为Java领域云计算框架遵循了此协议。
特别注意:这里指的主要版本才是3年,主要版本可不常有的哦
每每新版本发布,就会有一些老版本需要退位让贤。2021.0.0版本已发布,各版本的官方支持情况如下:
作为主要版本2020.0.0的常规升级版本,这次动作肯定没有上个版本那么大,稍微关注下即可。
支持为每个Load-balancer(负载均衡器)配置参数,相关代码在LoadBalancerClientsProperties
这里。
该特性同时也添加到了Gateway、Contract 和Openfeign项目中。
集成了AWS Secrets Manager、AWS Parameter Store 和 GCP Secret Manager。
这个没啥好说的,毕竟我天朝里配置中心,真有使用Spring Cloud Config的吗?
作为Spring Cloud非常非常亮眼、常用的组件,这个升级还是可圈可点的:功能更丰富了。
RedisRouteDefinitionRepository
这个实现类喽支持@Cachable
缓存注解,这个必须点赞,很方便很实用!
支持此新功能的核心API为:FeignCachingInvocationHandlerFactory
,复用了Spring Cache的能力。
本次Spring Cloud升级点并不多,可能刺激不到你的神级。但或许这也是好事呀,毕竟每次搞那么大的话,真升不动了,躺平走起。