Apache Seata(incubating) 首个版本重磅发布!

作者:Seata 社区

2.1.0 是 Seata 进入 Apache 基金会的第一个 Release Version。此次发布将 io.seata 包名更改为 org.apache.seata。除了按原有的 Roadmap 技术演进外,2.1.0 进行了大量兼容性工作,实现了 API、数据和协议的兼容。用户无需修改原有的 API 和配置,即可实现到 Apache 版本的平滑升级。

用户登记

欢迎已使用用户在此链接登记,便于我们更好的针对业务场景优化:

https://github.com/apache/incubator-seata/issues/1246

发布概览

功能特性方面,2.1.0 中对大家期待已久的 RocketMQ 消息事务集成做了支持;Raft 集群支持了 TC 多节点之间的元数据同步功能;Saga 事务模式与 Spring 框架解耦。

兼容性方面,针对原 io.seata 的 package 中的 API 做了全面的兼容处理,以保证从低版本升级至 Apache 版本上无需要修改任何代码。

另外,本次发布共通过了 110 多组 JDK(8/11/17/21) + Spring 版本+ OS(x86/arm64) + Druid 主要版本的严格交叉兼容测试,可放心平滑升级。

本次发布共修改文件数:4211,累计提交代码 +181157−152729,合并 PR 数 183 个,共 35 人参与代码 commit。

2.1.0 milestone:

https://github.com/apache/incubator-seata/milestone/34

seata-server:

https://dist.apache.org/repos/dist/release/incubator/seata/2.1.0/apache-seata-2.1.0-incubating-bin.tar.gz

docker image:

https://hub.docker.com/repository/docker/apache/seata-server

部署指南:

https://seata.apache.org/zh-cn/docs/ops/deploy-guide-beginner

升级指南:

https://seata.apache.org/zh-cn/docs/ops/upgrade

版本的主要更新如下

feature:

  • [#6370] Saga 模式与 Spring 框架解耦和重构。
  • [#6205] 提供 Mock Server 支持
  • [#6169] Saga 状态机在线设计器前端框架重构
  • [#6230] 支持 RocketMQ 消息事务
  • [#6326] 支持 Raft 集群节点间的元数据同步
  • [#6415] 支持 Saga 设计器的自动布局

bugfix:

  • [#6090] 修复 TCC 切面异常处理过程,不对内部调用异常做包装处理,直接向外抛出
  • [#6075] 修复镜像 SQL 对于 on update 列没有添加表别名的问题
  • [#6086] 修复 Oracle alias 解析异常
  • [#6085] 修复 JDK 9+ 版本编译后,引入后 ByteBuffer#flip NoSuchMethodError 的问题
  • [#6101] 修复 Apache Dubbo 3.x 版本中, 消费者端不能生成 TCC 代理的问题
  • [#6077] 修复表存在复合主键索引导致无法回滚问题
  • [#6121] 修复回滚分支事务时没有按照时间排序的问题
  • [#6182] 修复在 CI 中 guava-32.0.0-jre.jar zip 文件为空的问题
  • [#6196] 修复 asf 配置格式错误的问题
  • [#6143] 修复优雅停机问题
  • [#6204] 修复错误配置问题
  • [#6248] 修复 JDBC resultSet, statement, connection 关闭顺序
  • [#6261] AT 事务事务模式支持 PostgreSQL 集群模式 URI
  • [#6256] 修复使用 seata-all SDK 中 Raft-discovery 模块不能读取 registry.conf 的配置的问题
  • [#6232] 修复 MySQL 的 json 类型下出现 Cannot create a JSON value from a string with CHARACTER SET 'binary' 问题
  • [#6278] 修复 ProtocolV1SerializerTest 失败问题
  • [#6324] 修复 Parse protocol file failed 问题
  • [#6331] 修复 TCC 嵌套事务不能同时添加 TwoPhaseBusinessAction 和GlobalTransactional 两个注解的问题
  • [#6354] 修复动态升降级不能正常工作问题
  • [#6363] 修复 docker 镜像中的已知问题
  • [#6372] 修复初始化 SQL 文件 postgresql.sql 索引名称冲突问题
  • [#6380] 修复 SQLServer 检查 UNDO_LOG 表是否存在时的 SQL 异常
  • [#6385] 修复 Role.Participant 不执行 hook 但会清理的问题
  • [#6465] 修复 Saga 事务模式的 context replay 丢失 start 问题
  • [#6469] 修复在 SQLServer 数据库下 [lock_table] 数据表的插入操作 sql 中存在的错误
  • [#6496] 修复 XA 事务模式执行长时间 SQL 未完成回滚释放连接问题
  • [#6493] 修复 SQLServer SQL 报错问题
  • [#6497] 修复自动装配时的 TCC 配置类
  • [#6554] 修复序列化器不固定使用对应配置序列化器的问题
  • [#6555] 修复 businessActionContext 对 io seata 包的不兼容问题
  • [#6553] 修复执行完 'ServiceTask' 后无法应用任何评估器的问题
  • [#6575] 修复 io.seata ActionInterceptorHandler 兼容问题

optimize:

  • [#6031] 添加 undo_log 表的存在性校验
  • [#6089] 修改 RaftServerFactory 语义并删除不必要的单例构建
  • [#4473] RM appdata 大小限制
  • [#6071] 添加 git 信息到 JAR 包中
  • [#6042] 增加 raft 模式鉴权机制
  • [#6091] 优化 raft 鉴权时获取 tc 地址的方式
  • [#6098] 优化 acquireMetadata 方法的重试逻辑
  • [#6034] 使用 helm 图表进行部署时使用命令行中的命名空间
  • [#6116] 移除 lgtm.com
  • [#6164] redis 注册中心推空保护优化
  • [#6174] 增加 ASF 基础配置
  • [#6148] 支持 Nacos ram role 鉴权方式
  • [#6181] 更新贡献指引文档
  • [#6179] 移除 @author 信息
  • [#6176] 更新源文件 header 信息
  • [#6178] 更新 Apache License 头信息
  • [#6186] 更新 README.md(更新邮件列表和一些生态访问链接)
  • [#6184] 更新 NOTICE 文件
  • [#6192] 移除无用文件
  • [#6194] 修复 asf.yaml 解析错误问题
  • [#5399] 分支注册只在 RM 端
  • [#6154] 控制台日志优化 "kubectl logs -f"
  • [#6116] 重写 NettyPoolKey 的 hashcode 和 equals,修复了 channel 对象池重复构建问题
  • [#6195] 更新 change log 中的 seata url 为 apache/incubator-seata
  • [#6200] 去除 required_status_checks 检查
  • [#6201] 恢复 required_status_checks 但去除 context 校验
  • [#6218] 移除 Seata-Docker 链接
  • [#6227] 校验 pk 中不含逗号
  • [#6004] 优化 RM,TM 连接 server 快速失败
  • [#6243] 优化控制台页眉中的链接
  • [#6238] 文件合规优化
  • [#6239] 更新 security policy,disclaimer 和 notice 文件
  • [#6245] file模式下,在配置中心的 spring 配置改变时,使应用程序中的配置生效
  • [#6247] 优化 asf.yml 配置
  • [#6259] 修改全局会话大小超过配置的错误消息
  • [#6264] 修复 jib-maven-plugin 编译失败问题
  • [#6246] 在 maven 打包的同时打包前端资源
  • [#6268] 更新 console 模块 npmjs 过时依赖
  • [#6271] 统一 git 信息
  • [#6265] 优化在 arm64 上构建前端失败的问题
  • [#6267] 增加 Server 反序列化校验
  • [#6275] 优化 .asf.yaml 文件中的 label 格式
  • [#6291] 优化 seata-server 在 idea 等开发工具运行时,控制台未输出完整日志的问题
  • [#6283] 增加兼容模块支持 io.seata APIs
  • [#6294] 拆分前端资源打包流程到单独的 profile
  • [#6285] 优化控台中时间查询条件不准确的问题
  • [#6297] 修复 maven-pmd-plugin 相关的问题
  • [#6298] 重命名包名为 org.apache.seata
  • [#6302] 增加 io.seata shade 打包方案
  • [#6306] 替换一些 URL 至 org/apache/seata
  • [#6304] 禁用 OSSRH 发布工作流
  • [#6310] seata-server 兼容 io.seata 包
  • [#6301] 升级 console 前端依赖及支持的 nodejs 版本
  • [#6301] 添加 saga 相关的 io.seata 兼容性 API
  • [#6313] console 展示版本号
  • [#6315] 兼容低版本的 SPI
  • [#6327] 兼容 integration.http 和 integration.http.Jakarta API
  • [#6328] 兼容 integration.grpc API
  • [#6330] 去除 mariadb API
  • [#6329] 添加 saga 子组件的 io.seata 兼容性 API
  • [#6254] 优化 Hessian 序列化
  • [#6343] 兼容 tm 模块和 rm-datasource 模块
  • [#6345] 兼容 tcc 模块
  • [#6332] 分发包中移除 mysql 依赖
  • [#6343] 兼容 TM 模块和 rm-datasource 模块
  • [#6349] 迁移 dockerhub 仓库
  • [#6357] 优化协议编解码的序列化/反序列化
  • [#6356] 去除健康检查页面的鉴权
  • [#6360] 优化部分链接 401 的问题
  • [#6350] 移除 enableDegrade 配置
  • [#6366] 优化 globaltransaction 向下兼容性
  • [#6369] 优化 arm64 ci
  • [#6386] 在 ConfigurationCache 类中,将 byte-buddy 替换为 JDK 代理
  • [#6391] 禁止重复注册 TCC 资源
  • [#6393] 元数据同步前判断版本,并增加重试功能
  • [#6387] 优化 tcc 使用兼容
  • [#6403] 优化 Config 兼容模块
  • [#6402] 优化 rm-datasource 向下兼容
  • [#6419] 优化 integration-tx-api 向下兼容
  • [#6427] 支持 spi、saga、spring 模块的向下兼容
  • [#6442] 阐明 if
  • [#6487] 修复错误包名以及单词
  • [#6458] 增加 MAC 地址 null 值检查
  • [#6516] 优化代码格式
  • [#6429] 移除重复注释
  • [#6405] 修复 kotlin 编译失败
  • [#6412] 优化 core 兼容模块
  • [#6518] 优化 ConfigurationCache 代理方法
  • [#6529] 优化发布插件
  • [#6548] 升级 byte-buddy 版本至 1.14.15
  • [#6539] 增加组件 license
  • [#6540] 排除 com.google.guava:listenablefuture 依赖
  • [#6549] 支持 macos arm 架构单测
  • [#6558] 移除 mysql-connector-java 依赖
  • [#6570] 添加 notice 文件
  • [#6578] registry.conf 补充 raft 配置
  • [#6576] 移除 oracle 数据类型序列化扩展
  • [#6583] 优化默认编译不依赖 Git 环境
  • [#6585] 优化 compatible 模块的配置
  • [#6597] 从源码中移除 binary 包
  • [#6605] 订正  license 和 notice

security:

  • [#6069] 升级Guava依赖版本,修复安全漏洞
  • [#6144] 升级Nacos依赖版本至1.4.6
  • [#6145] 升级 jettison依赖版本至1.5.4
  • [#6147] 升级 kafka-clients依赖至3.6.1
  • [#6339] 升级 spring mvc 和 tomcat.embed 依赖
  • [#6340] 升级和整理依赖
  • [#6362] 升级 Spring 相关的依赖
  • [#6375] 覆盖 console 前端安全漏洞

test:

  • [#6081] 添加 test-os.yml 用于测试seata在各种操作系统下的运行情况
  • [#6125] TransactionTemplateTest单测unbind xid
  • [#6157] 增加common模块单测覆盖率
  • [#6250] 增加seata-core模块单测覆盖率
  • [#6325] 修复mock-server相关测试用例
  • [#6430] 增加 common 模块单元测试覆盖率
  • [#6456] 调整动态配置监听测试用例
  • [#6466] 支持redis的集成测试
  • [#6484] 修复FileConfigurationTest和MockServerTest失败
  • [#6545] 修复 TestConfigCustomSPI 兼容性测试失败
  • [#6560] 修复 mockserver Test
  • [#6565] 修复 testCompensationStateMachine 与mockServer单测冲突

refactor:

  • [#6280] 使用diagram-js重构Saga设计器
  • [#6269] 统一Seata异常规范
  • [#6420] 优化配置缓存

非常感谢以下 contributors 的代码贡献。若有无意遗漏,请报告。

  • slievrly
  • ptyin
  • laywin
  • imcmai
  • DroidEye2ONGU
  • funky-eyes
  • Bughue
  • wangliang181230
  • ggbocoder
  • leezongjie
  • l81893521
  • baiyangtx
  • lightClouds917
  • xingfudeshi
  • PleaseGiveMeTheCoke
  • sunrui1225
  • PeppaO
  • AlbumenJ
  • dreamskyvision
  • jsbxyyx
  • liuqiufeng
  • saberyjs
  • gggyd123
  • jonasHanhan
  • Code-breaker1998
  • yixia
  • MikhailNavitski
  • deung
  • tanyaofei
  • xjlgod
  • TakeActionNow2019
  • sunxunle
  • bageyang
  • YeonCheolGit

同时,我们收到了社区反馈的很多有价值的 issue 和建议,非常感谢大家。

社区任务

社区发布了大量的新手任务,欢迎认领。

https://github.com/apache/incubator-seata/issues?q=is%3Aissue+is%3Aopen+label%3A"task%3A+help-wanted"

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/821704.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

越界检测视频分析网关区域入侵识别人员入侵算法的技术原理和视频监控应用

在传统的监控模式下,依赖人工持续监视视频画面存在明显的局限性,包括疲劳、注意力分散以及无法覆盖所有区域等问题,这使得实现24小时、全方位监控变得困难。而人工智能技术的应用,通过在关键位置部署摄像头,能够捕获连续的视频流。结合深度学习模型,这些视频流可以被实时…

InterlliJ IDEA中的properties文件中文乱码方法

有志者,事竟成,破釜沉舟,百二秦关终属楚; 苦心人,天不负,卧薪尝胆,三千越甲可吞吴。

书生浦语全链路介绍

模型性能天梯图推理能力:综合推理能力领先社区开源模型 支持100万字上下文(短期记忆):相较于gpt4o是100倍的量级 自主规划和搜索完成复杂任务:通过信息搜索和整合,针对复杂问题撰写专业回答,效率提升60倍核心技术思想在于:数据迭代反馈,仍然是数据质量驱动的模型性能,…

【C#】 .NET Framework 中使用JSON

因为 System.Text.Json 是 .NET Core 和 .NET 5+ 中引入的命名空间。如果你使用的是 .NET Framework,你需要使用 Newtonsoft.Json 库来处理 JSON。 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; us…

如何删除 Git 中的 log

​为了维护 Git 仓库的清晰和整洁,可能需要删除一些不必要的日志。以下步骤将指导你:1.理解 Git 日志的结构;2.使用交互式 rebase 方法;3.应用 filter-branch 命令;4.采用 BFG Repo-Cleaner 工具;5.删除和清理无用的对象。首先,了解 Git 的日志结构对于后续的操作至关重…

C# 开发环境搭建 (.Net8.0+VSCODE)

.Net8.0+VSCODE安装软件.NET8.0 安装地址:https://dotnet.microsoft.com/zh-cn/download VSCode 安装地址:https://code.visualstudio.com/2.安装插件 (ctrl+shift+x ) 2.1.设置中文语言环境 2.2.安装c#代码编辑器 C# Dev Kit若是本人原创文章,请标明:本文来自博客园,作者…

【slam】运行aloam项目过程记录

主要参考: https://blog.csdn.net/abanchao/article/details/123558717 https://blog.csdn.net/qq_21043585/article/details/129785570?spm=1001.2014.3001.5502 ubuntu下使用不同版本的c++编译器的方法: https://blog.csdn.net/qq_39779233/article/details/105124478 过程…

场效应管和mos管区别

场效应管(FET)和金属-氧化物-半导体(MOS)管之间的主要区别包括:1.工作原理和结构差异;2.电气特性和性能;3.应用领域和特定用途;4.驱动要求和灵敏度;5.功耗和效率;6.耐久性和可靠性;7.成本和市场可用性。了解这些区别对于电子工程师在设计和应用选择中至关重要。1.工…

01-计算机基本认知与环境搭建

计算机基本认识 Python基本介绍 Python就是一门编程语言,而且是现在世界上最流行的编程语言之一。 编程语言就是人类和计算机进行交流的语言,是用来定义 计算机程序 的形式语言。 我们通过编程语言来编写程序代码,再通过语言处理程序执行向计算机发送指令,让计算机完成对应…

02-python 数据类型

python容器类型数据 str 序列操作 字符串属于序列类型,所谓序列,指的是一块可存放多个值的连续内存空间,这些值按一定顺序排列,可通过每个值所在位置的编号(称为索引、下标)访问它们。 s= "hello moluo"Python 还支持索引值是负数,此类索引是从右向左计数,换…

为什么HashMap使用高16位异或低16位计算Hash值

HashMap使用高16位异或低16位计算Hash值的原因:一、提高Hash值的随机性和均匀性;二、减少Hash冲突,提高HashMap的性能;三、优化对Hash值高位和低位的处理方式等。提高Hash值的随机性和均匀性是指,HashMap使用高16位异或低16位的方式计算Hash值,可以使得高位和低位的信息都…

VS Code 配置 C/C++ 开发环境

一、下载编译工具MinGW github上的版本更新较快 github 配置系统环境,并验证 二、VS Code 1、 VS Code 安装C/C++相关扩展2.VSCode 添加编译器、并运行调试 Ctrl+Shift+p 进入C/C++编辑配置,修改编译器目录 运行1.cpp 执行