Spring Cloud Alibaba 2021.0.1.0 版本发布啦

2023-11-05

cce88cfb4ab812f50b35e7ad8e78f2fb.gif


01

什么是 Spring Cloud Alibaba?

Aliware

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

d6f8c3efcba2d614695f19af9ddc1286.png

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

02

新版本预览

Aliware

本次隆重发布的 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]。

03

升级指导

Aliware

01

版本号

由于 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。

02

升级操作

如果项目中需要使用 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

新特性以及使用方式

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 配置熔断规则。

  1. 想要对 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 对这一块做了很大的优化工作,不再需要全量启动一个容器来刷新配置。


04

回顾展望

Aliware

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

9a7f532614bde743a92cf42feea963d2.png

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

dbd67744f5ac9c7a0dcc36b6db0c0aa1.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 应用提供开源的服务契约、标签路由等微服务治理能力上支持努力,非常欢迎有兴趣的同学加入我们一起做一些有意思的事情!

05

社区建设

Aliware

01

开发角色

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 并被合并;

02

开发团队

本页面展示了 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

~

03

双周会

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

04

新 Committer 介绍

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

a7d5c2c8ee2813e2c526dc5cdbce8082.png


06

Spring Cloud Alibaba 企业版

Aliware

除了开源的 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 企业版相关详情~

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Spring Cloud Alibaba 2021.0.1.0 版本发布啦 的相关文章

随机推荐

  • pip 常用命令及控制台怎么查看python 及pip 和已安装包版本号

    在使用python的时候 经常使用到pip这个工具 可以很方便的线上安装依赖库 当然pip还有很多参数都可以帮我们去查询一些库信息 在安装python的时候 下载带有pip的安装包就可以直接安装pip啦 当然没有带pip的 也可以通过下载安
  • [C] 跨平台使用Intrinsic函数范例2——使用SSE2、AVX指令集 处理 双精度浮点数组求和

    作者 zyl910 本文面对对SSE等SIMD指令集有一定基础的读者 以双精度浮点数组求和为例演示了如何跨平台使用SSE2 AVX指令集 支持vc gcc编译器 在Windows Linux Mac这三大平台上成功运行 一 关键讲解 前文
  • 90道渗透测试面试题(附答案)

    2023年已经快过去一半了 不知道小伙伴们有没有找到自己心仪的工作呀 最近后台收到不少小伙伴说要我整理一些渗透测试的面试题 今天它来了 觉得对你有帮助的话记得点个赞再走哦 1 什么是渗透测试 渗透测试是一种评估计算机系统 网络或应用程序的安
  • 四.javascript对象

    目录 一 对象的介绍 1 对象的概念 2 对象的属性 3 对象的方法 二 创建对象 1 使用构造函数创建内置对象 2 直接创建自定义对象 3 使用自定义构造函数创建对象 三 对象的属性 1 设置对象的属性 2 存取对象属性 3 属性的枚举
  • 使用gpt和mindshow快速制作PPT

    目录 准备工具 PPT制作大体流程 工具 步骤 获取PPT大纲 注意 要markdown格式 编辑 打开MindShow 找不到的可以私信我 编辑 创建ppt 编辑 选择ppt基本样式 编辑 点击下载 不过要提前登录一下就好 编辑 添加动画
  • Qt(c++)调用python一直报错slot、hypot等

    最近在Qt里调用python代码 参考教程 https blog csdn net a137748099 article details 119217197 引入python的include libs之后 在c 里写了简单的调用python
  • 各种通信方式对比

    各种通信方式对比 2011年11月09日 16 58 25 horatio2010 阅读数 444 通信名称 连接端 通信方式 传输顺序 通信速度 I2C scl sda 2 串行 高位 低位 标准模式速度100kbit s 快速模式
  • 前后端常见的几种鉴权方式

    本文链接 https blog csdn net wang839305939 article details 78713124 最近在重构公司以前产品的前端代码 摈弃了以前的session cookie鉴权方式 采用token鉴权 忙里偷闲
  • C#深拷贝和浅拷贝的区别

    先上代码 后解释 public class Person public int Age public DateTime BirthDate public string Name public IdInfo IdInfo
  • C++ Templates:实例化

    延迟实例化 当隐式实例化类模板时 同时也实例化了该模板的每个成员声明 但并没有实例化相应的定义 然而 存在例外 1 如果类模板包含了一个匿名的union 那么该union定义的成员同时也被实例化了 2 作为实例化类模板的结果 虚函数的定义可
  • react ref和组件API

    介绍 昨天学习到了生命周期 今天我们接着昨天的知识点继续学习 今天学习一下state setState以及ref和组件API 大家感兴趣的话可以跟随文章进行学习呦 state和setState state 组件自身状态 setState u
  • 【100%通过率 】【华为OD机试真题】模拟商场优惠打折(一)【2022 Q4

    华为OD机试 题目列表 2023Q1 点这里 2023华为OD机试 刷题指南 点这里 题目描述 模拟商场优惠打折 有三种优惠券可以用 满减券 打折券和无门槛券 满减券 满100减10 满200减20 满300减30 满400减40 以此类推
  • 辛普森悖论

    本系列主要为大家带来一整套的博弈论问题 广义 因为在面试的过程中 除了常规的算法题目 我们经常也会被问到一些趣味题型来考察思维 而这类问题中 很多都有博弈论的影子存在 这些公司里以FLAG Facebook LinkedIn Amazon
  • webpack5.x性能优化之 代码分包 配置文件分离 多入口 SplitChunks cacheGroups runtimeChunk dynamic import(动态导入) 懒加载 魔法注释

    webpack优化 文章目录 webpack优化 代码分离 认识代码分离 多入口起点 Entry Dependencies 入口依赖 SplitChunks chunks 其他的splitChunks属性 很少手动配置 minSize和ma
  • java多线程---C++没有内置的多线程机制,因此必须调用操作系统的多线程功能来进行多线程程序的设计。

    多线程 Java 的特点之一就是内置对多线程的支持 多线程允许同时完成多个任务 实际上多线程使人产生多个任务在同时执行的错觉 因为目前的计算机的处理器在同一时刻只能执行一个线程 但处理器可以在不同的线程之间快速地切换 由于处理器速度非常快
  • uni-app 和 spring boot 实现通知栏消息推送 (第二版)

    背景 上次第一版打包上线后 无法使用推送失效 第一版使用的是 websocket h5puls 原因 估计是云打包后对这个做了一些编译处理 导致失效 解决方案 用官网的教程 走个推服务器 取消后端自己的websocket实现 虽然麻烦 但是
  • 深度学习入门(四):经典网络架构(Alexnet、Vgg、Resnet)

    一 经典网络架构 Alexnet 2012年ImageNet竞赛冠军 8层神经网络 5层卷积层 3层全连接 二 经典网络架构 Vgg 2014 年ImageNet 竞赛冠军 VGG 最大的特点就是它在之前的网络模型上 通过比较彻底地采用 3
  • Excutor线程池原理详解

    目录 一 线程池的创建以及参数 二 任务提交的方法 三 线程池参数解释 四 线程池原理 五 线程池原理图 六 execute方法执行流程图 一 线程池的创建以及参数 public ThreadPoolExecutor int corePoo
  • vue3.0版本给对象新增属性

    对象新增属性 Reflect set 目标对象 属性名 值 Reflect set val middle middle
  • Spring Cloud Alibaba 2021.0.1.0 版本发布啦

    01 什么是 Spring Cloud Alibaba Aliware Spring Cloud Alibaba 是由阿里巴巴 后文简称 阿里 中间件团队于 2018 年 7 月开源 为业界提供的一套基于阿里内部分布式技术的一站式微服务构建