前言:
2020 年 12 月 22 日Spring官方博客宣布,Spring Cloud 2020.0.0正式发布。2020.0.0是第一个使用新的版本号命名方案的Spring Cloud发行版本。在此之前Spring Cloud使用英国伦敦地铁站的命名方式来命名一个大版本(train version),如果不按照新的版本号命名的话,本次的版本号应该是Ilford;
更新版本没有什么大惊小怪的,但是本次更新却正式开启结束Spring Cloud Netflix体系的进程。Netflix公司是目前微服务落地中最成功的公司;
它开源了诸如Eureka、Hystrix、Zuul、Feign、Ribbon等等广大开发者所知微服务套件,统称为Netflix OSS;
在当时Netflix OSS成为微服务组件上事实的标准;但是微服务兴起不久,也就是在 2018 年前后Netflix公司宣布其核心组件Hystrix、Ribbon、Zuul、Eureka等进入停更状态,不再进行新特性开发,只修 BUG;为什么会这样?具体缘由种种,比如:核心开发人员被挖走、开发团队意见不统一等等,活生生把自己给玩死了。
Netflix停更直接影响了Spring Cloud项目的发展路线,Spring 官方不得不采取了应对措施,在 SpringOne 2019 大会中,Spring Cloud宣布 Spring Cloud Netflix 项目进入维护模式,并在 2020 年移除相关的Netflix OSS组件。
1.Netflix哪些组件被移除了?
如今Netflix OSS在Spring Cloud体系的时代已经落幕了;
Spring Cloud官方尤其着重指出ribbon、hystrix 和 zuul从Spring Cloud 2020.0正式版发布后将不再被Spring Cloud支持。在目前最新的Spring Cloud 2020.0中仅仅剩下了Eureka;但是留给Eureka的时间也不多了。Feign 虽然是Netflix公司开源的,但从 9.x 版本开始就移交给OpenFeign组织管理,不从属于Netflix OSS范畴。
2. 有哪些替代方案?
Netflix OSS事件变故让Spring家族吃一堑长一智,微服务开发者不必担忧Netflix OSS被移除后会留下空白。
Spring Cloud在研发维护基础标准和组件的同时,引入了一些云厂商来分散风险,目前有:
-
微软的Spring Cloud Azure
-
阿里的Spring Cloud Alibaba
-
亚马逊的Spring Cloud for Amazon Web Services
-
谷歌云平台的 Spring Cloud GCP。
3. SpringCloud 2020最新版本
SpringCloud官网截止到现在,最新版本更新到SpringCloud 2020.0.4,前段时间才刚发布,这是错误修正版本,兼容 Spring Boot 2.4.x and 2.5.x。
但目前工程只完成了百分之60,还在迭代中。
相对于上个版本主要更新内容:
Spring Cloud Commons
-
允许通过 group 创建反应式断路器
Spring Cloud Config
-
当使用 JDBC 作为存储时,可以返回 Boolean、 Integer 数据
-
当使用 Git 作为存储时,可以动态的提供 用户名、密码
Spring Cloud OpenFeign
-
支持修改 feignclient 的断路器类型
Spring Cloud Netflix
-
当 eureka 服务不可用时,不注册到相关的配置中心
Spring Cloud Sleuth
-
简化相关的参数显示
Spring Cloud Kubernetes
-
统一 fabric8 和 k8s 之间的命名空间方式
依赖升级
模块 | 版本 |
---|---|
Spring Cloud Starter Build | 3.0.4 |
Spring Cloud Netflix | 3.0.4 |
Spring Cloud Openfeign | 3.0.4 |
Spring Cloud Gateway | 3.0.4 |
Spring Cloud Commons | 3.0.4 |
Spring Cloud Config | 3.0.5 |
Spring Cloud Consul | 3.0.4 |
Spring Cloud Contract | 3.0.4 |
Spring Cloud Kubernetes | 2.0.4 |
Spring Cloud Sleuth | 3.0.4 |
Spring Cloud Vault | 3.0.4 |
Spring Cloud Zookeeper | 3.0.4 |
Spring Cloud CircuitBreaker | 2.0.2 |
Spring Cloud Stream | 3.1.4 |
Spring Cloud Function | 3.1.4 |
4. 微服务建议技术方案
先看各大组件目前维护状态
具体技术选型还是根据项目自身综合考虑,这里只给大家建议组件方面选型;经过调研,国内BAT以及传统技术公司,好用、用的比较多的。
服务注册中心:Eureka、Zookeeper、Consul、Nacos,推荐使用SpringCloud Alibaba的Nacos
服务调用:feign、openfeign,推荐使用SpringCloud的openfeign
负载均衡服务调用:Ribbon、LoadBalancer,推荐使用SpringCloud的LoadBalancer
断路器:Hystrix、resilience4j、sentinel,推荐使用SpringCloud Alibaba的sentinel
服务网关:Zuul、Zuul2、gateway,推荐使用SpringCloud的gateway
服务配置:Config、Nacos,推荐使用SpringCloud Alibaba的Nacos
服务总线:Bus、Nacos,推荐使用SpringCloud Alibaba的Nacos
总结:
微服务是现在企业用的最多的解决方案,Java中用的最多的也就是SpringCloud
现在技术版本升级越来越快,由于Netflix OSS版本的停更 ,我们公司项目前段时间重新进行选型,做了很多的调研,也是花了足够大的成本去做这个事情;
最后决定采用微服务方案版本为:SpringCloud 2020.0.3 + SpringCloud Alibaba 2.2.1.RELEASE + SpringBoot 2.5.2
SpringCloud与SpringBoot版本兼容对应:https://start.spring.io/actuator/info