Spring Cloud Alibaba 2021.0.1.0 版本发布啦

本文涉及的产品
云原生网关 MSE Higress,422元/月
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
注册配置 MSE Nacos/ZooKeeper,118元/月
简介: 本次隆重发布的 Spring Cloud Alibaba 2021.0.1.0 版本在 Spring Cloud 2021.0.1、Spring Boot 2.6.3 的基础上对其中包括注册配置中心、分布式消息等在内的众多组件进行重大升级。

作者 | 铖朴


什么是 Spring Cloud Alibaba?


Spring Cloud Alibaba 是由阿里巴巴(后文简称:阿里)中间件团队于 2018 年 7 月开源,为业界提供的一套基于阿里内部分布式技术的一站式微服务构建解决方案。其基于 Spring Cloud 微服务框架标准,针对微服务架构中的服务注册与发现、分布式消息、服务限流降级以及分布式事务等核心模块,都提供了相应的面向业界的成熟解决方案,其与Spring Cloud之间的关系如下图所示:

2.png

依托 Spring Cloud Alibaba,用户仅需要添加一些注解和少量配置,就可以将 Spring Cloud 应用接入阿里微服务解决方案,通过阿里中间件来迅速搭建稳定可靠的分布式应用系统。


新版本预览


本次隆重发布的 Spring Cloud Alibaba 2021.0.1.0 版本在 Spring Cloud 2021.0.1、Spring Boot 2.6.3 的基础上对其中包括注册配置中心、分布式消息等在内的众多组件进行重大升级:


  • Nacos:升级 Nacos 客户端到 1.4.2 版本,修复了 Nacos 1.4.1 所存在的相关问题,支持了 Nacos 服务发现失败容错等相关能力。
  • RocketMQ:升级到了 4.9.2,并将之前项目中的 RocketMQ 单独分支融入到了项目主分支,跟随大版本一起发布迭代,使用户可在最新 Spring Cloud Alibaba 中直接使用 RocketMQ 新支持的批量消息、异步消息回调处理、Push 模式下指定消费起始位等众多新特性。
  • Sentinel:升级到了 1.8.3,除了修复部分之前版本所存在的问题外,还提供了丰富的针对 FeignClient 的容错能力,支持针对全局 FeignClient 配置默认熔断规则,支持对单个 FeignClient 配置特定容错规则以及支持针对单个方法配置熔断规则等能力。
  • Spring Boot:在Spring Boot 2.6.3 版本基础上,支持了 spring.config.import 的应用配置方式,方便用户更友好地在应用中配置和使用 Nacos 配置中心。


除了组件升级,另外也修复了很多之前版本所存在的问题,进一步提升了 Spring Cloud Alibaba 使用的稳定性与健壮性。更多资料可参见发版公告 [1]。


Spring Cloud Alibaba 与 Spring Cloud 和 Spring Boot 当前各版本对应关系可参见文末官网 Wiki 版本说明 [2]。

升级指导


1、版本号


由于 Spring Cloud 版本号经历了一轮从英文名到以年份开头的命名方式的变化,了解到社区内外用户对于 Spring Cloud Alibaba 与 Spring Cloud 版本号之间对应关系经常感到困惑。为了让大家今后在使用 Spring Cloud Alibaba 能便捷的知道其所对应的 Spring Cloud 版本,经过社区核心成员之间在双周会上的讨论以及与 Spring Cloud 社区负责人的沟通后决定,从 2021.0.1.0 开始,Spring Cloud Alibaba 版本将会对应 Spring Cloud 版本, 前三位为 Spring Cloud 版本,最后一位为扩展版本,比如针对Spring Cloud 2021.0.1对应的 Spring Cloud Alibaba 第一个版本的版本号就是 2021.0.1.0,第二个版本的版本号便是 2021.0.1.1。

2、升级操作


如果项目中需要使用 Spring Cloud Alibaba 2021.0.1.0 版本,请在项目中添加如下依赖:


<dependencyManagement>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-dependencies</artifactId>
        <version>2.6.3</version>
        <type>pom</type>
        <scope>import</scope>
    </dependency>
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-dependencies</artifactId>
        <version>2021.0.1</version>
        <type>pom</type>
        <scope>import</scope>
    </dependency>
    <dependency>
        <groupId>com.alibaba.cloud</groupId>
        <artifactId>spring-cloud-alibaba-dependencies</artifactId>
        <version>2021.0.1.0</version>
        <type>pom</type>
        <scope>import</scope>
    </dependency>
</dependencyManagement>


注意事项:spring-cloud-starter-alibaba-nacos-config 模块移除了 spring-cloud-starter-bootstrap 依赖,如果你想以旧版的方式使用,你需要手动加上该依赖,现在推荐使用 spring.config.import 方式引入配置。完成以上步骤就能无缝切换到 spring cloud alibaba 2021.0.1.0 版本。03


3、新特性以及使用方式


1、支持 spring.config.import


这里假设有一个配置文件(bootstrap.yml),升级到新版本应该怎么配置呢?


# bootstrap.yml
spring:
  cloud:
    nacos:
      config:
        name: test.yml
        group: DEFAULT_GROUP
        server-addr: 127.0.0.1:8848
        extension-configs:
          - dataId: test01.yml
            group: group_01
          - dataId: test02.yml
            group: group_02
            refresh: false


这两个配置是等价的:


# application.yml
spring:
  cloud:
    nacos:
      config:
        group: DEFAULT_GROUP
        server-addr: 127.0.0.1:8848
  config:
    import:
      - optional:nacos:test.yml  # 监听 DEFAULT_GROUP:test.yml
      - optional:nacos:test01.yml?group=group_01 # 覆盖默认 group,监听 group_01:test01.yml
      - optional:nacos:test02.yml?group=group_02&refreshEnabled=false # 不开启动态刷新
      - nacos:test03.yml # 在拉取nacos配置异常时会快速失败,会导致 spring 容器启动失败


注意事项:

  • 如果使用 spring.config.import 就不能使用 bootstrap.yml/properties 引入配置的方式了 !!!
  • 如果引入了 spring-cloud-starter-alibaba-nacos-config,并且使用 import 方式导入配置, 项目启动时会自动检测是否引入了 nacos: 条目,如果没有 import nacos 条目,会出现如下错误:


The spring.config.import property is missing a nacos: entry
Action:
Add a spring.config.import=nacos: property to your configuration.
  If configuration is not required add spring.config.import=optional:nacos: instead.
  To disable this check, set spring.cloud.nacos.config.import-check.enabled=false.


你可以手动通设置 spring.cloud.nacos.config.import-check.enabled=false 关闭它,但是不建议这么做,这个功能可以帮助你检查是否引入多余依赖

  • 假如想保留以前的使用方式 (bootstrap引入配置),你只需要添加依赖 spring-cloud-starter-bootstrap 依赖,不需要修改一行代码


2、Nacos 容错能力


新增配置项 spring.cloud.nacos.discovery.failure-tolerance-enabled, 设置为 true (默认 false) 开启 nacos 服务发现失败容错能力,该功能会在 nacos 获取实例失败时返回上一次获取的实例,可以在 nacos server 网络不稳定时提供容错能力,不会导致请求全部挂掉。


3、支持 FeignClient 灵活的熔断配置


当 Sentinel 作为 Spring Cloud 断路器实现时,支持为每个 FeignClient 添加断路器配置。
添加依赖:


<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-circuitbreaker-sentinel</artifactId>
</dependency>


这里有两个 FeignClient:


@FeignClient(value = "user", fallback = UserFallback.class)
public interface UserClient {
    @GetMapping("/{success}")
    String success(@PathVariable Boolean success);
}
@FeignClient(value = "order", fallback = OrderFallback.class)
public interface OrderClient {
    @GetMapping("/{success}")
    String success(@PathVariable Boolean success);
    @GetMapping("/{success}")
    String error(@PathVariable Boolean success);
}


现在有如下需求:

  1. 想要对全局的 FeignClient 配置一个默认熔断规则。
  2. 想要对 user FeignClient 配置熔断规则。
  3. 想要对 order FeignClient 的指定方法(error)配置熔断规则。


添加以下配置:


feign:
   circuitbreaker:
      enabled: true
   sentinel:
      default-rule: default # 全局规则名称
      rules:
         # 全局配置,这些参数的意思请查看 com.alibaba.csp.sentinel.slots.block.degrade.DegradeRule
         # 可配置多条规则
         default:
            - grade: 2
              count: 1
              timeWindow: 1
              statIntervalMs: 1000
              minRequestAmount: 5
            - grade: 2
              count: 1
         # 针对 user FeignClient
         user:
            - grade: 2
              count: 1
              timeWindow: 1
              statIntervalMs: 1000
              minRequestAmount: 5
         # 针对 order FeignClient error 方法,注意中括号,不然会解析出来的值会不一致
         "[order#error(Boolean)]":
            - grade: 2
              count: 1
              timeWindow: 1
              statIntervalMs: 1000
              minRequestAmount: 5


该功能还支持从配置中心动态刷新,可以将上述配置放入配置中心(nacos,consul),修改规则会立刻生效,如果不需要该功能可以通过 feign.sentinel.enable-refresh-rules=false 来禁用它。


注意事项:如果你使用的是 spring-cloud-starter-alibaba-sentinel,请不要配置 feign.sentinel.enable=true,会使配置失效。


4、升级建议


  1. 在 spring boot 2.6 之后默认开启了禁止循环引入,建议大家不要关闭,这是一种不好的编码习惯,如果你的项目里出现了循环引用,请选择重构它。
  2. 抛弃 bootstrap 引入配置的方式,使用 spring.config.import 方式引入配置,spring boot 2.4 对这一块做了很大的优化工作,不再需要全量启动一个容器来刷新配置。

回顾展望


经过三年多的飞速发展,截止到当前,Spring Cloud Alibaba 共发布了 27 个版本,在 GitHub 上的累计 stars 数目超过了 2.15w,fork 数达到了 6.7k,用户数达到了 21k 之多,各项关键数据遥遥领先国内外各大云厂商推出的同类开源微服务产品。
image.gif3.png

除了支撑阿里巴巴经济体日常复杂的微服务应用场景,Spring Cloud Alibaba 也被数千家外部企业用户在生产场景中广泛使用。
image.gif4.png

未来 Spring Cloud Alibaba 会继续对齐 Spring Cloud 主流版本发展演进,近期会同时支持以 Spring Cloud 2021.x 和 Hoxton 两个当前主流版本对应的 Spring Cloud Alibaba 2021.x 和 2.2.X 版本迭代。社区未来除了会持续为 Spring Cloud 应用使用阿里巴巴微服务解决方案中的 Nacos、Sentinel、RocketMQ 等组件的稳定性和易用性上持续努力外,为 Spring Cloud 应用提供开源的服务契约、标签路由等微服务治理能力上支持努力,非常欢迎有兴趣的同学加入我们一起做一些有意思的事情!


社区建设


1、开发角色


Spring Cloud Alibaba 项目开发者包含 Steering Committee Member、Committer、Contributor 三种角色,每种角色的标准定义如下。


1、Steering Committee Member


Steering Committee 作为 Spring Cloud Alibaba 项目的技术发展指导委员会,其成员是对Spring Cloud Alibaba项目的演进和发展做出显著贡献的个人。具体包含以下的标准:


  • 完成多个关键模块或者工程的设计与开发,是项目的核心开发人员;
  • 持续的投入和激情,能够积极参与社区、官网、issue、PR 等项目相关事项的维护;
  • 在社区中具有有目共睹的影响力,能够代表 Spring Cloud Alibaba 参加重要的社区会议和活动;
  • 具有培养 Committer 和 Contributor 的意识和能力;


2、Committer


Committer 是具有仓库写权限的个人,包含以下的标准:

  • 能够在长时间内做持续贡献 issue、PR 的个人;
  • 参与 issue 列表的维护及重要 feature 的讨论;
  • 参与 code review;


3、Contributor


Contributor 是对项目有贡献的个人,标准为:

  • 提交过 PR 并被合并;


2、开发团队


本页面展示了 Spring Cloud Alibaba 的开发团队成员,我们一直都在持续扩充中,欢迎加入社区:)

Steering Committee Member 成员:

姓名 Github 账号 角色 联系方式 组织
方剑 fangjian0423 Steering Committee Member fangjian0423@gmail.com 阿里巴巴
肖京 flystar32 Steering Committee Member flystar32@163.com 阿里巴巴
马昕曦 mercyblitz Steering Committee Member mercyblitz@gmail.com 自由职业
任浩军 HaojunRen Steering Committee Member 1394997@qq.com Nepxion社区
陈曦 theonefx Steering Committee Member chenxilzx1@gmail.com 阿里巴巴


Committer 成员:

姓名 Github账号 角色 联系方式 组织
廖春涛 chuntaojun Committer liaochuntao@live.com 腾讯
余黄彬 yuhuangbin Committer danielyu96@163.com ~
赵奕豪 sczyh30 Committer sczyh16@gmail.com 阿里巴巴
张开兆 zkzlx Committer kiss_maple@163.com 得物
饶子昊 steverao Committer zihaorao@126.com 阿里巴巴
刘梁文 DanielLiu1123 Committer llw599502537@gmail.com 在校学生
冷冷 lltx Committer wangiegie@gmail.com ~
echooymxq echooymxq Committer echooy.mxq@gmail.com ~



3、双周会


为了提供一个社区成员之间进行沟通交流的时间和机会,Spring Cloud Alibaba 社区从2021 年 12 月决定正式启动双周会制度,到目前为止已经持续了 4 次。在双周会中,社区核心开发成员会对社区近期的 issues、PR 以及社区未来发展规划进行介绍,让社区内外同学更好地了解和使用 Spring Cloud Alibaba。Spring Cloud Alibaba 社区的双周会无特殊情况一般定在每隔一周的星期四晚上 8 点进行,会议开始前一周内社区会及时将本次会议接入方式在 GitHub 相关 issues [3] 上进行同步,欢迎社区内外的同学有时间多多参与。


4、新 Committer 介绍


Spring Cloud Alibaba 社区近几个月涌现了一些积极参与社区维护迭代的外部贡献者,在此,向他们表示感谢!另外,对于其中多次提交有重要贡献 feature 的同学,社区按照推荐制度在近期双周会中正式提名其为 Committer,在此也向其表示祝贺。欢迎更多外部同学关注 Spring Cloud Alibaba 开源社区和贡献开源社区。
image.gif5.png

Spring Cloud Alibaba 企业版


除了开源的 Spring Cloud Alibaba 以外,针对企业级用户复杂繁重的微服务治理诉求,,阿里云中间件团队推出的阿里云微服务引擎(Microservices Engine,MSE)提供了包括全链路灰度、无损上下线、服务预热、离群实例摘除等在内的大量企业级微服务治理功能,让用户可不改一行代码即可将应用接入 MSE 便捷、低成本地拥有企业级微服务治理能力。除了微服务治理,MSE 还提供了企业级的 Nacos 注册配置中心和企业级云原生网关等众多产品,帮助企业用户迅速拥抱云原生微服务。


相关链接


[1]发版公告:https://github.com/alibaba/spring-cloud-alibaba/releases/tag/2021.0.1.0 

[2]官网 Wiki 版本说明:https://github.com/alibaba/spring-cloud-alibaba/wiki/%E7%89%88%E6%9C%AC%E8%AF%B4%E6%98%8E 

[3]GitHub 相关 issues:https://github.com/alibaba/spring-cloud-alibaba/issues/2333

[4]过往的会议纪要:https://www.yuque.com/spring-cloud-alibaba/xgu1l3/pgmd2a


点击了解更多 Spring Cloud Alibaba 企业版相关详情~

https://www.aliyun.com/product/aliware/mse

相关实践学习
基于MSE实现微服务的全链路灰度
通过本场景的实验操作,您将了解并实现在线业务的微服务全链路灰度能力。
相关文章
|
3天前
|
人工智能 安全 Java
AI 时代:从 Spring Cloud Alibaba 到 Spring AI Alibaba
本次分享由阿里云智能集团云原生微服务技术负责人李艳林主讲,主题为“AI时代:从Spring Cloud Alibaba到Spring AI Alibaba”。内容涵盖应用架构演进、AI agent框架发展趋势及Spring AI Alibaba的重磅发布。分享介绍了AI原生架构与传统架构的融合,强调了API优先、事件驱动和AI运维的重要性。同时,详细解析了Spring AI Alibaba的三层抽象设计,包括模型支持、工作流智能体编排及生产可用性构建能力,确保安全合规、高效部署与可观测性。最后,结合实际案例展示了如何利用私域数据优化AI应用,提升业务价值。
|
27天前
|
SpringCloudAlibaba 负载均衡 Dubbo
【SpringCloud Alibaba系列】Dubbo高级特性篇
本章我们介绍Dubbo的常用高级特性,包括序列化、地址缓存、超时与重试机制、多版本、负载均衡。集群容错、服务降级等。
【SpringCloud Alibaba系列】Dubbo高级特性篇
|
4天前
|
人工智能 Java API
阿里云工程师跟通义灵码结伴编程, 用Spring AI Alibaba来开发 AI 答疑助手
本次分享的主题是阿里云工程师跟通义灵码结伴编程, 用Spring AI Alibaba来开发 AI 答疑助手,由阿里云两位工程师分享。
阿里云工程师跟通义灵码结伴编程, 用Spring AI Alibaba来开发 AI 答疑助手
|
27天前
|
存储 SpringCloudAlibaba Java
【SpringCloud Alibaba系列】一文全面解析Zookeeper安装、常用命令、JavaAPI操作、Watch事件监听、分布式锁、集群搭建、核心理论
一文全面解析Zookeeper安装、常用命令、JavaAPI操作、Watch事件监听、分布式锁、集群搭建、核心理论。
【SpringCloud Alibaba系列】一文全面解析Zookeeper安装、常用命令、JavaAPI操作、Watch事件监听、分布式锁、集群搭建、核心理论
|
27天前
|
SpringCloudAlibaba JavaScript Dubbo
【SpringCloud Alibaba系列】Dubbo dubbo-admin安装教程篇
本文介绍了 Dubbo-Admin 的安装和使用步骤。Dubbo-Admin 是一个前后端分离的项目,前端基于 Vue,后端基于 Spring Boot。安装前需确保开发环境(Windows 10)已安装 JDK、Maven 和 Node.js,并在 Linux CentOS 7 上部署 Zookeeper 作为注册中心。
【SpringCloud Alibaba系列】Dubbo dubbo-admin安装教程篇
|
27天前
|
SpringCloudAlibaba Dubbo Java
【SpringCloud Alibaba系列】Dubbo基础入门篇
Dubbo是一款高性能、轻量级的开源Java RPC框架,提供面向接口代理的高性能RPC调用、智能负载均衡、服务自动注册和发现、运行期流量调度、可视化服务治理和运维等功能。
【SpringCloud Alibaba系列】Dubbo基础入门篇
|
27天前
|
人工智能 前端开发 Java
Spring AI Alibaba + 通义千问,开发AI应用如此简单!!!
本文介绍了如何使用Spring AI Alibaba开发一个简单的AI对话应用。通过引入`spring-ai-alibaba-starter`依赖和配置API密钥,结合Spring Boot项目,只需几行代码即可实现与AI模型的交互。具体步骤包括创建Spring Boot项目、编写Controller处理对话请求以及前端页面展示对话内容。此外,文章还介绍了如何通过添加对话记忆功能,使AI能够理解上下文并进行连贯对话。最后,总结了Spring AI为Java开发者带来的便利,简化了AI应用的开发流程。
335 0
|
14天前
|
人工智能 自然语言处理 Java
Spring Cloud Alibaba AI 入门与实践
本文将介绍 Spring Cloud Alibaba AI 的基本概念、主要特性和功能,并演示如何完成一个在线聊天和在线画图的 AI 应用。
192 7
|
1月前
|
Java Nacos Sentinel
Spring Cloud Alibaba:一站式微服务解决方案
Spring Cloud Alibaba(简称SCA) 是一个基于 Spring Cloud 构建的开源微服务框架,专为解决分布式系统中的服务治理、配置管理、服务发现、消息总线等问题而设计。
300 13
Spring Cloud Alibaba:一站式微服务解决方案
|
1月前
|
消息中间件 监控 Java
如何将Spring Boot + RabbitMQ应用程序部署到Pivotal Cloud Foundry (PCF)
如何将Spring Boot + RabbitMQ应用程序部署到Pivotal Cloud Foundry (PCF)
42 6