最近在进行nacos版本的升级,对于Spring Cloud Alibaba之间各个组件的版本关系不是很了解,因此通过本篇文章对Spring Cloud Alibaba各个组件之间的版本关系进行了解。
Spring Cloud 本身并不是一个拿来即可用的框架,它是一套微服务规范,这套规范共有两代实现。
(子项目):
● 第一代实现: Spring Cloud Netflix,
● 第二代实现: Spring Cloud Alibaba。
2018 年 12 月12 日,Netflix 公司宣布 Spring Cloud Netflix
系列大部分组件都进入维护模式,不再添加新特性。这严重地限制了 Spring Cloud 的高速发展,于是各大互联网公司和组织开始把目光转向Spring Cloud 的第二代实现:Spring Cloud Alibaba。
由于Alibaba的一些组件性能等更胜与Netflix,而市面上大多都在使用Alibaba的解决方案,所以后面都是环绕Alibaba进行讲解
Spring Cloud Alibaba 是阿里巴巴结合自身丰富的微服务实践而推出的微服务开发的一站式解决方案,是 Spring Cloud 第二代实现的主要组成部分。
Spring Cloud Alibaba 吸收了 Spring Cloud Netflix 的核心架构思想,并进行了高性能改进。自 Spring Cloud Netflix 进入停更维护后,Spring Cloud Alibaba 逐渐代替它成为主流的微服务框架。
Spring Cloud Alibaba 是国内首个进入 Spring 社区的开源项目。2018 年 7 月,Spring Cloud Alibaba 正式开源,并进入 Spring Cloud 孵化器中孵化;2019 年 7 月,Spring Cloud 官方宣布 Spring Cloud Alibaba 毕业,并将仓库迁移到 Alibaba Github OSS 下。
虽然 Spring Cloud Alibaba 诞生时间不久,但俗话说的好“大树底下好乘凉”,依赖于阿里巴巴强大的技术影响力,Spring Cloud Alibaba 在业界得到了广泛的使用,成功案例也越来越多。
Spring Cloud Alibaba 包含了多种开发分布式微服务系统的必需组件
Nacos:阿里巴巴开源产品,一个更易于构建云原生应用的动态服务发现,配置管理和服务管理平台。
Sentinel:阿里巴巴开源产品,把流量作为切入点,从流量控制,熔断降级,系统负载保护等多个维度保护服务的稳定性。
RocketMQ:Apache RocketMQ 是一款基于Java 的高性能、高吞吐量的分布式消息和流计算平台。
Dubbo:Apache Dubbo 是一款高性能的 Java RPC 框架。
Seata:阿里巴巴开源产品,一个易于使用的高性能微服务分布式事务解决方案。
Alibaba Cloud OSS:阿里云对象存储服务器(Object Storage Service,简称OSS),是阿里云提供的海量、安全、低成本、高可靠的云存储服务。
Alibaba Cloud Schedulerx:阿里中间件团队开发的一款分布式调度产品,支持周期性的任务与固定时间点触发任务。
通过 Spring Cloud Alibaba 的这些组件,我们只需要添加一些注解和少量配置,就可以将 Spring Cloud 应用接入阿里微服务解决方案,通过阿里中间件来迅速搭建分布式应用系统。
Spring Cloud 两代实现组件对比
● Spring Cloud Alibaba 的应用场景如下:大型复杂的系统,例如大型电商系统。
● 高并发系统,例如大型门户网站、商品秒杀系统。
● 需求不明确,且变更很快的系统,例如创业公司业务系统。
由于Spring Cloud Alibaba 是基于Spring Cloud做的,而Spring Cloud又是基于Spring Boot做的,所以三者之间存在一个版本兼容的映射关系。
Spring Cloud的版本命名遵循伦敦地铁站的名字,按字母顺序排列。例如Angel、Brixton、Camden、Dalston、Edgware、Finchley、Greenwich、Hoxton等。每个版本下面还有细分的SR(Service Release)和RELEASE版本。
Spring Cloud Alibaba的版本命名比较直接,主要是数字和RELEASE组合
版本号如2.1.0.RELEASE或2.1.1.RELEASE,通常遵循语义化版本控制(Semantic Versioning)的原则。在这种版本命名方式中,每个数字和术语都有特定的含义
主版本号(Major Version) - 这是版本号的第一个数字,在这个例子中是“2”。主版本号的改变通常表示有重大更新,可能包含不兼容的API变更,需要开发者更加谨慎地升级。
次版本号(Minor Version) - 这是版本号的第二个数字,在这个例子中是“1”。次版本号的变化通常表示添加了新的功能,但是向后兼容,即新版本应该能与旧版本的API兼容。
修订号(Patch Version) - 这是版本号的第三个数字,在这个例子中是“0”或“1”。修订号的变化通常指修复了现有功能的bug,不引入新功能,保持向后兼容。
RELEASE - 这个术语通常出现在版本号的最后,表示这是一个稳定版本,适合广泛使用。与之相对的可能是BETA(测试版)或SNAPSHOT(快照版),这些版本可能还在开发中,不够稳定。
版本兼容是非常重要的,如果版本不兼容可能会出行各种各样的问题。我们不仅要学会版本依赖关系还要学会如何查询,因为以后它还会出现新的版本,我们要知道在哪里查。
版本兼容是非常重要的,如果版本不兼容可能会出行各种各样的问题。我们不仅要学会版本依赖关系还要学会如何查询,因为以后它还会出现新的版本,我们要知道在哪里查。
版本发布说明 | Spring Cloud Alibaba