由于最近使用了目前最新的 Springboot 2.5.0-RC1,在整合 SpringCloud 2020.0.3版本 过程中,发现了版本似乎进行了巨大的更新(确实很久没有关注过Spring了。。。)!
整体了解了下,顺便和大家也聊一聊这次更新吧,本周还准备在发一篇SpringCloud组件源码级分析,带领大家手撕源码 ^ - ^
(截止稿前 2021/04/23 官方还未同步标注好当前最新版本为2020.0.3,实际上Springboot 2.5.0稳定版本已经默认集成该版本)
先简单聊聊目前Spring版本的一些更新
1、命名规则
之前的Spring Cloud的Release Train名称采用的是伦敦地铁站命名方式,如:Hoxton、Greenwich等。后来发现这种命名方式很让人迷糊,到底版本之间的顺序是什么样子的?后来就改为这种日历模式,挺好的。
2、版本约定(列举个别重要的)
- Spring Framework:5.3.6
- Spring Boot:2.5.0
- Spring Cloud:2020.0.3
- Tomcat: 9.0.45
3、阻断式升级(不向下兼容)
差不多在2019年的时候,Spring Cloud在其Roadmap里就宣布将要终结的一些库/版本,其中最重要的就是指Spring Cloud Netflix项目进入维护模式,然后计划在2020年完全移除。
Spring Cloud做出这样的决定其实也是“被迫的”。我们知道Spring Cloud一直以来把Netflix OSS套件作为其官方默认的一站式解决方案,那时的Netflix OSS套件基本跟Spring Cloud划等号。奈何呀,Netflix公司在2018年前后宣布其核心组件Hystrix、Ribbon、Zuul、Archaius等均进入维护状态。
虽然有Zuul 2.x,Archaius 2.x,但它们均不能向下兼容,无法平滑升级,因此几乎等于无法使用
所以他来了,Spring Cloud 2020.0版本正式发布,基本将Netflix的东西都砍完了,除了Eureka,目前还保留下来的组件好像就剩Fegin了,这还是因为Feign虽然最初属Netflix公司,但从9.x版本开始就移交给OpenFeign组织管理了,因此不再划入Netflix管辖范畴,我们在项目中导入也变成了spring-cloud-starter-openfeign
保留组件:
<!-- Eureka --> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId> </dependency> <!-- Fegin --> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-openfeign</artifactId> </dependency>
4、替代品
SpringCloud在官网上宣布将以如下内容替代Netflix的东西
当前组件 | 替代品 |
Hystrix | Resilience4j |
Hystrix Dashboard / Turbine | Micrometer + Monitoring System |
Ribbon | Spring Cloud Loadbalancer |
Zuul 1 | Spring Cloud Gateway |
Archaius 1 | Spring Boot external config + Spring Cloud Config |
5、如所Spring官方宣布的一样,以下模块已从spring-cloud-netflix中删除:
- spring-cloud-netflix-archaius
- spring-cloud-netflix-concurrency-limits
- spring-cloud-netflix-core
- spring-cloud-netflix-dependencies
- spring-cloud-netflix-hystrix
- spring-cloud-netflix-hystrix-contract
- spring-cloud-netflix-hystrix-dashboard
- spring-cloud-netflix-hystrix-stream
- spring-cloud-netflix-ribbon
- spring-cloud-netflix-sidecar
- spring-cloud-netflix-turbine
- spring-cloud-netflix-turbine-stream
- spring-cloud-netflix-zuul
- spring-cloud-starter-netflix-archaius
- spring-cloud-starter-netflix-hystrix
- spring-cloud-starter-netflix-hystrix-dashboard
- spring-cloud-starter-netflix-ribbon
- spring-cloud-starter-netflix-turbine
- spring-cloud-starter-netflix-turbine-stream
- spring-cloud-starter-netflix-zuul
- Support for ribbon, hystrix and zuul was removed across the release train projects.
ok,说了这么多 也差不多把目前我觉得比较重大的改变都提了一嘴,下一篇准备开始手撕源码,哈哈哈。
有兴趣可以关注下公众号哦