带你走进Spring Cloud的世界

开局我们先看一张Spring 社区发布的一张简化的架构图

可以看到Spring Boot 通过自动装配和各种开箱即用的特性,搞定了数据层访问、RESTful 接口、日志组件、内 置容器等等基础功能,让开发人员不费吹灰之力就可以搭建起一个应用;Spring Cloud 主外,在应用集群之外提供了各种分布式系统的支持特性,帮助轻松实现负载均衡、熔断降级、配置管理等诸多微服务领域的功能。

从两者分工可以看出来, Spring Cloud就是在Spring Boot基础上添加了支持微服务领域的功能,从而变成了微服务领域的全家桶解决方案。

Spring Cloud组件库的变更

Netflix 是一家美国的流媒体巨头,它靠着自己强大的技术实力,开发沉淀了一系列优秀的组件,这些组件经历了 Netflix 线上庞大业务规模的考验,功能特性和稳定性过硬。如 Eureka 服务注册中心、Ribbon 负载均衡器、Hystrix 服务容错组件等。后来发生的故事可能你已经猜到了,Netflix 将这些组件贡献给了 Spring 开源社区,构成了 Netflix 组件库。可以这么说,在 Spring Cloud 的早期阶段,是 Netflix 打下了的半壁江山。

后来Eureka 2.0 开源计划搁浅,而后 Netflix 宣布 Hystrix 进入维护状态,Eureka 和 Hystrix 这两款 Netflix 组 件库的明星项目停止了新功能的研发。

Spring 社区不得不开始思考替代方案,在后续的新版本中走向了"去 Netflix 化"。以至于 Netflix 的网关组件 Zuul 2.0 历经几次跳票千呼万唤始出来后,Spring Cloud 社区已经不打算集成 Zuul 2.0,而是掏出了自己的Gateway 网关。

Spring Cloud Alibaba 是由 Alibaba 贡献的组件库,随着阿里在开源路线上的持续投入,近几年阿里系在开源领域的声音非常响亮。Spring Cloud Alibaba 凝聚了阿里系在电商 领域超高并发经验的重量级组件,保持了旺盛的更新活力,成为了 Spring Cloud 社区的一股新生代力量,逐渐取代了旧王 Netflix 的江湖地位。

功能特性 Alibaba组件 Netflix组件 SpringCloud官方或第三方开源组件库
服务治理 Nacos Eureka Consul
负载均衡 Ribon LoadBalancer
服务间调用 Dubbo(RPC) Netflix Feign OpenFeign
服务容错 Sentinel Hystrix Resilence4j
配置中心 Nacos SpringCloud config
消息总线 Bus
服务网关 Zuul Gateway
分布式链路追踪 Sleuth Zipkin
消息事件驱动 RockMQ Stream
分布式事务 Seata

上面表格中列出的业务开发过程中的常用功能性组件, 当然我们平时的使用中也有很多其他的开源组件可供选择,比如消息中间件还可以使用Kafaka。

Spring Cloud版本更新策略

我们来看看Spring Cloud各个版本号以及其更新节奏

版本代号 版本号 发布时间
Angel 1.0.x 2015年5月
Brixton 1.1.x 2016年5月
Camden 1.2.x 2017年7月
Dalston 1.3.x 2017年4月
Edgware 1.4.x 2017年11月
Finchley 2.0.x 2018年6月
Greenwich 2.1.x 2019年1月
Hoxton 2.2.x 2019年11月
Ilford 2020.0.x 2020年12月
Jubilee 2021.0.x 2021年12月
Kilburn 2022.0.x 2022年11月
Leyton 2023.0.x 2023年11月
Moorgate 2024.0.x 2024年12月
Northfields 2054.0.x 预计2025

具体的可以参考 github.com/spring-clou...

和springboot版本对应关系

Spring Cloud 版本 Spring Boot 版本
2025.0.x (Northfields) 待定
2024.0.x (Moorgate) 待定
2023.0.x (Leyton) 3.2.x
2022.0.x (Kilburn) 3.0.x, 3.1.x
2021.0.x (Jubilee) 2.6.x, 2.7.x
2020.0.x (Ilford) 2.4.x, 2.5.x
Hoxton 2.2.x, 2.3.x
Greenwich 2.1.x
Finchley 2.0.x
Edgware 1.5.x
Dalston 1.5.x

你可以从spring.io/projects/sp...

创建项目的时候你可以通过start.spring.io/,这样当选择 Spring Boot 版本时,它会自动显示兼容的 Spring Cloud 版本。

或者通过spring.io/blog 查看一些信息。

Alibaba Spring Cloud版本对应关系

如果使用alibaba springcloud对应关系如下:

Spring Cloud Alibaba Version Spring Cloud Version Spring Boot Version JDK Version
2023.0.0.0 Spring Cloud 2023.0.0 3.2.x JDK 17+
2022.0.0.0 Spring Cloud 2022.0.0 3.0.x JDK 17+
2021.0.5.0 Spring Cloud 2021.0.5 2.6.13 JDK 8+
2021.0.4.0 Spring Cloud 2021.0.4 2.6.11 JDK 8+
2021.0.1.0 Spring Cloud 2021.0.1 2.6.3 JDK 8+
2.2.7.RELEASE Hoxton.SR12 2.3.12.RELEASE JDK 8
2.2.6.RELEASE Hoxton.SR9 2.3.2.RELEASE JDK 8
2.1.4.RELEASE Greenwich.SR6 2.1.13.RELEASE JDK 8
2.0.4.RELEASE Finchley.SR4 2.0.9.RELEASE JDK 8

可以通过 github.com/alibaba/spr... 这里查看更详细的对应关系

相关推荐
我不是外星人1 小时前
有了 Harness Engineering ,真的还需要研发工程师吗?
前端·后端·ai编程
candyTong1 小时前
RTK 技术原理:一次典型会话里,80% 上下文是怎么省下来的
javascript·后端·架构
Rust研习社3 小时前
组合真的优于继承吗?为什么 Rust 和 Go 都拥抱组合舍弃继承?
后端·rust·编程语言
IT_陈寒4 小时前
JavaScript的闭包把我坑惨了,说好的内存会自动回收呢?
前端·人工智能·后端
CaffeinePro5 小时前
Pydantic深度使用:数据校验、枚举、ORM映射
后端·fastapi
Chenyiax5 小时前
从 Chat 到 Responses:OpenAI API 抽象为什么变了?
后端
MariaH5 小时前
Koa和Express的区别
后端
MariaH5 小时前
Koa框架的使用
后端
luckdewei6 小时前
那个用 passlib 做认证的新同事,上线第一天就把用户密码写进了日志
后端
ping某8 小时前
为什么 Nginx 明明监听了 80,转发后端时却用了 4xxxx 端口?
后端·nginx