写点什么

Seata 2.x 首个版本正式发布,支持 Raft 集群模式

  • 2024-01-21
    浙江
  • 本文字数:4584 字

    阅读完需:约 15 分钟

作者:Seata 社区

用户登记

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


https://github.com/seata/seata/issues/1246

2.x Roadmap

发布概览

2.0.0 中对大家期待已久的 Raft 集群模式做了支持,Raft 集群模式消除了对第三方注册中心和 Seata-Server 后端存储的依赖,让运维变得更简单可靠性变得更高。除此之外,AT 模式支持 SQLServer、达梦和 PolarDB-X 2.0 数据库;对事务模式的 API 完成了统一;支持事务二阶段并行大幅度提升事务的性能;支持 IPV6。共通过了 110 多组 jdk(8,11,17,21)+ Spring 各版本 + OS(x86,arm64)+ druid  主要版本的交叉兼容测试,可放心平滑升级。




此次 release  共修改文件数:930,累计提交代码  +56171 −6549,合并 PR 182 个,共 47 人参与代码 commit。


https://github.com/seata/seata/pull/6067


2.0.0 milestone:


https://github.com/seata/seata/milestone/21


seata-server:


https://github.com/seata/seata/releases/download/v2.0.0/seata-server-2.0.0.tar.gz


docker image:


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


部署指南:


https://seata.io/zh-cn/docs/ops/deploy-server-raft


升级指南:


https://seata.io/zh-cn/docs/ops/upgrade与低版本可平滑兼容。

版本的主要更新如下

feature:


  • [#5226] 支持 Raft 集群模式

  • [#5165] 统一多种事务模式的 API

  • [#5352] 在 TCC Business Action Context 中集成 jackson 和 gson 序列化功能

  • [#5377] 支持 http PUT 请求

  • [#5396] TC 异常日志指标采集

  • [#5118] 支持二阶段并行下发执行

  • [#5529] docker 镜像支持注入 JVM 参数到容器

  • [#3887] 增加 AT 模式的 SQLServer 数据库支持

  • [#4033] 增加 ServerDB 存储模式的 SQLServer 支持

  • [#5600] skywalking 插件支持根据 XID 追踪事务

  • [#5357] seata console 集成 saga 设计器

  • [#5717] 兼容 1.4.2 及以下版本的 file.conf/registry.conf 配置

  • [#5842] 构建 docker 镜像时添加相关 git 信息,方便定位代码关系

  • [#5902] 支持 IPv6 网络环境

  • [#5907] 增加 AT 模式的 PolarDB-X 2.0 数据库支持

  • [#5932] AT 模式支持达梦数据库

  • [#5946] 增加 sqlserver 对控制台分页接口的适配


bugfix:


  • [#5677] 修复 saga 模式下 serviceTask 入参 autoType 转化失败问题

  • [#5277] 修复控制台全局锁查询接口查到了已释放的锁

  • [#5282] 修复并行 rm 请求处理时数组索引越界问题

  • [#5294] 修复 AT 模式下 pgsql/oracle 的主键列自增的问题

  • [#5298] 事务提交或回滚超时不移除 global session

  • [#5304] 移除基于文件存储恢复时的 RollbackRetryTimeout 事务

  • [#5310] 修复生成 update 前后镜像 sql 不对关键字转义的 bug

  • [#5318] 修复 jdk8 中 G1 参数

  • [#5330] 修复单元测试中发现的 bug

  • [#5337] 修复 feature#5165 中关于 spring 使用环境下,多 interceptor 排序问题,同时修复 order 一致时无法使用 BeforeTransaction(AfterTransaction)事务排序问题

  • [#5347] 修复控制台打印 unauthorized error 问题

  • [#5355] 修复自定义 context-path 时的问题

  • [#5362] 修复当 TC 端回滚返回 RollbackFailed 时,自定义 FailureHandler 的方法未执行

  • [#5373] 修复客户侧事务提交前超时未执行 hook 和 failureHandler 的问题

  • [#5395] 修复 AT 模式下新增字段产生的字段找不到

  • [#5426] 修复不能获取 GlobalTransactional 注解问题

  • [#5464] 修复 saga 模式全局事务状态始终为 Begin 的问题

  • [#5478] 修复提交事务时事务已完成不抛出异常问题

  • [#5490] 修复日志中不打印方法名的问题

  • [#5449] 修复 Oracle XA 模式 start 重入问题

  • [#5462] 在 RM 中使用 @GlobalTransactional 时,如果 RM 执行失败会抛出 ShouldNeverHappenException

  • [#5498] 修复 Oracle 10g 中“setDate”条件的全表扫描问题

  • [#5531] 修复读取 logback 文件路径错误的问题

  • [#5523] 修复 GlobalStatus=9 在 DB 存储模式无法清除的问题

  • [#5558] 修复 mariadb 回滚失败的问题

  • [#5556] 修复 oracle 插入 undolog 失败问题

  • [#5579] 修复 resourceId 为空时,获取 RM_CHANNELS 空指针问题

  • [#5577] 修复 grpc 拦截器解绑 xid 失败问题

  • [#5594] 修复 participant 情况下的重复日志

  • [#5604] 修复在 DB 模式下 asyncCommit 和 queueToRetryCommit 两个方法总是失败的问题

  • [#5658] 修复大写和小写列名称的转义字符

  • [#5661] 修复 connectionProxyXA 连接复用时 timeout 为 null

  • [#5679] 修复 xxx.grouplist 和 grouplist.xxx 配置项兼容问题

  • [#5715] 修复取中划线配置项错误问题

  • [#5748] 修复在某些情况下,业务 sql 中主键字段名大小写与表元数据中的不一致,导致回滚失败

  • [#5745] 修复不满足 sofa-rpc 中 setAttachment 方法的参数前缀要求问题

  • [#5772] 修复 TableMetaCache 的一些字段类型,避免溢出

  • [#5787] 解决 redis 作为注册中心时 cluster 无法自定义的 BUG

  • [#5810] 修复 druid 依赖冲突导致的 XA 事务开始异常与回滚失败

  • [#5821] 修复 insert executor 对关键字未转义的问题

  • [#5835] bugfix: 修复当 XA 事务失败回滚后,TC 还会继续重试回滚的问题

  • [#5881] 修复事务回滚时锁未删除的问题

  • [#5930] 修复存储为 redis 哨兵模式下哨兵密码缺失的问题

  • [#5958] 在二阶段提交状态下发生重选时需要进行解除全局锁

  • [#5971] 修复某些未弃用的配置显示"已弃用"

  • [#5977] 修复当 raft server 关闭时,rpc server 未关闭的问题

  • [#5954] 修复保存的分支会话状态与实际的分支会话状态不一致的问题

  • [#5990] 修复 redis sentinel master node 宕机时,lua 脚本未同步的问题

  • [#5997] 修复全局事务钩子重复执行

  • [#6018] 修复错误的 metric 上报

  • [#6024] 修复控制台点击事务信息页面中的"查看全局锁"按钮之后白屏的问题

  • [#6015] 修复在 spring 环境下无法集成 dubbo

  • [#6049] 修复客户端在 raft 注册中心类型下,网络中断时,watch 线程未暂停一秒等待重试的问题

  • [#6050] 修改 RaftServer#destroy 为等待所有关闭流程结束

  • [#6033] 修复 HSFRemotingParser 中 isReference 判断逻辑,去掉关于 FactoryBean 的无用判断

optimize:

  • [#5966] Saga 表达式解耦并统一格式

  • [#5928] 增加 Saga 模式状态机语义验证阶段

  • [#4858] 重构优化 SessionManager 用法

  • [#4881] 重新划分 SessionManager 和 SessionLifecycleListener 用法

  • [#5273] 优化 protobuf-maven-plugin 插件的编译配置,解决高版本的命令行过长问题

  • [#5278] 清理 sessionmanager 多例模式遗留代码

  • [#5302] 移除启动脚本的-Xmn 参数

  • [#4880] 优化提交和回滚遇到异常时的日志输出

  • [#5322] 优化 SPI 加载日志

  • [#5326] 为全局事务超时日志添加时间信息

  • [#5328] 为全局事务和事务存储的 Redis 模式,增加对应的 lua 实现

  • [#5341] 优化 gRPC TCC 模式

  • [#5342] 优化 TCC fence log 清理定时任务的 delay 参数值检查

  • [#5344] 添加配置中心、注册中心类型以及存储模式日志信息

  • [#5351] 优化 TCC 模式下的 RPC filter

  • [#5354] 重构 RPC 集成模块

  • [#5370] 优化事务失败处理 handler

  • [#5431] 优化 github 工作流

  • [#5461] 优化 license workflow

  • [#5456] 重构 ColumnUtils 和 EscapeHandler

  • [#5438] 优化 code style 检测属性

  • [#5471] 优化客户侧事务日志

  • [#5485] 优化 Server 日志输出

  • [#4907] 调整二阶段 result 线程池大小及优化代码

  • [#5487] 将 branchsession 中的 lockholder 增加 final 修饰

  • [#5519] 优化 Oracle FenceHandler

  • [#5501] 支持乐观锁方式更新事务状态

  • [#5419] 优化镜像发布流水线支持 jdk8/17 和支持 maven 3.9.0

  • [#5549] 优化 gpg key 和 发布流水线

  • [#5576] 仅当 useTCCFence 设置为 true 时,才开启 Fence 表清理任务

  • [#5623] 优化异步提交线程和重试线程之间可能存在的冲突

  • [#5563] 优化 channel 通道可用性日志输出

  • [#5553] 支持表和列元数据大小写敏感设置

  • [#5644] 优化 Server 日志输出

  • [#5680] 优化大小写转义符

  • [#5686] 优化 license check actions

  • [#5714] 优化分布式锁竞争日志

  • [#5723] 优化 docker 镜像的默认时区

  • [#5779] 删除无用的输出日志并统一日志输出路径

  • [#5802] 优化 server 端事务隔离级别为读已提交

  • [#5783] 支持 nacos 上 application name 配置

  • [#5524] 支持 seata-server.sh 中的更多操作命令

  • [#5836] 分离 mariadb 和 mysql 的 AT 实现

  • [#5869] 优化一些小的语法

  • [#5885] 优化 ConnectionProxyXA 中的日志

  • [#5894] 移除无 license 组件

  • [#5895] 移除 7z 压缩支持

  • [#5896] 移除 mariadb.jdbc 依赖

  • [#5384] 统一版本号管理,只需维护 build/pom.xml 中的版本号即可。

  • [#5419] 发布基于多个 java 版本的 docker 镜像

  • [#5829] 修正 codecov chart 不展示的问题

  • [#5878] 优化 httpcore 和 httpclient 的依赖定义

  • [#5917] 升级 native-lib-loader 版本

  • [#5926] 优化一些与 Apollo 相关的脚本

  • [#5938] 支持 jmx 监控配置

  • [#5944] 修复构建操作警告

  • [#5951] 删除在 jdk17 中不支持的配置项

  • [#5959] 修正代码风格问题及去除无用的类引用

  • [#6002] 移除 fst 序列化模块

  • [#6045] 优化 MySQL 衍生数据库判断逻辑


security:


  • [#5642] 增加 Hessian 序列化黑白名单

  • [#5694] 修复若干 Node.js 依赖安全漏洞

  • [#5801] 修复 Java 依赖安全漏洞

  • [#5805] 修复序列化漏洞

  • [#5868] 修复 npm package 漏洞

  • [#5916] 修复 npm package 漏洞

  • [#5942] 升级依赖版本

  • [#5987] 升级依赖版本

  • [#6013] 升级 seata-server 依赖的 spring 版本


test:


  • [#5308] 添加单元测试用例 [FileLoader, ObjectHolder, StringUtils]

  • [#5309] 添加单元测试用例 [ArrayUtils, ConfigTools, MapUtil]

  • [#5335] 添加单元测试用例 [EnhancedServiceLoader,ExtensionDefinition,SizeUtilTest,ReflectionUtil,LowerCaseLinkHashMap,FileLoader,ObjectHolder]

  • [#5367] 修复 UpdateExecutorTest 单测失败问题

  • [#5383] 修复多 Spring 版本测试失败

  • [#5391] 添加 config 模块的单元测试用例

  • [#5428] 修复 FileTransactionStoreManagerTest 单测失败问题

  • [#5622] 添加单元测试用例 [ExporterType, RegistryType]

  • [#5637] 添加单元测试用例 [BatchResultMessage, HeartbeatMessage, RegisterRMResponse, ResultCode, RegisterTMResponse, MergeResultMessage, MergedWarpMessage, Version]

  • [#5893] 移除 sofa 测试用例

  • [#5845] 升级 druid 版本,并添加 test-druid.yml 用于测试 seata 与 druid 各版本的兼容性。

  • [#5863] 修复单元测试在 Java21 下无法正常运行的问题。

  • [#5986] 修复 zookeeper 单测失败问题

  • [#5995] 添加 RaftClusterMetadataMsg 模块的单元测试用例

  • [#6001] 添加 RaftMsgExecute 模块 branch 包下的单元测试用例

  • [#5996] 添加 RaftMsgExecute 模块 global 包下的单元测试用例

  • [#6003] 添加 RaftMsgExecute 模块 lock 包下的单元测试用例

  • [#6005] 修复 saga 异步测试未定义的行为

  • [#6009] 添加 RaftServerFactory 的单元测试用例

  • [#6052] UT 升级 springboot 和服务器的 spring 版本


英文版参考:https://github.com/seata/seata/releases/tag/v2.0.0

致谢

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


  • slievrly

  • xssdpgy

  • albumenj

  • PeppaO

  • yuruixin

  • CrazyLionLi

  • xingfudeshi

  • Bughue

  • pengten

  • wangliang181230

  • GoodBoyCoder

  • funky-eyes

  • isharpever

  • mxsm

  • liuqiufeng

  • l81893521

  • dmego

  • zsp419

  • tuwenlin

  • sixlei

  • yixia

  • capthua

  • robynron

  • XQDD

  • Weelerer

  • Ifdevil

  • iquanzhan

  • leizhiyuan

  • Aruato

  • ggbocoder

  • ptyin

  • jsbxyyx

  • xxxcrel

  • fengzhenhai168

  • tobehardest

  • leezongjie


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

社区讨论群

常用链接

Seata: https://github.com/seata/seata


Samples: https://github.com/seata/seata-samples


Release: https://github.com/seata/seata/releases


官网:https://seata.io

开发者招募

如果您对 Seata 的前后端开发、测试和文档感兴趣,请您邮件联系:slievrly@gmail.com

发布于: 刚刚阅读数: 3
用户头像

阿里云云原生 2019-05-21 加入

还未添加个人简介

评论

发布
暂无评论
Seata 2.x 首个版本正式发布,支持 Raft 集群模式_阿里云_阿里巴巴云原生_InfoQ写作社区