Seata 1.6.0 正式发布,大幅度提升存储性能

本文涉及的产品
可观测可视化 Grafana 版,10个用户账号 1个月
应用实时监控服务-用户体验监控,每月100OCU免费额度
Serverless 应用引擎免费试用套餐包,4320000 CU,有效期3个月
简介: 主要新增特性:支持 oracle 和 pgsql 多主键;支持 seata-server 服务注册多注册中心;支持 dubbo3;支持 jdk17;扩展 update join 语法支持;扩展多种 oracle timestamp 类型;支持 ARM64 镜像。大幅度提升基于 DB 的存储性能。

作者:Seata 社区


用户登记


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

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


发布概览


主要新增特性:支持 oracle 和 pgsql 多主键;支持 seata-server 服务注册多注册中心;支持 dubbo3;支持 jdk17;扩展 update join 语法支持;扩展多种 oracle timestamp 类型;支持 ARM64 镜像。大幅度提升基于 DB 的存储性能。


此次 release 修改文件数:398,累计合并 PR 87 个,共 34 人参与代码 commit 人数。


1.6.0 milestone:

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


seata-server:

https://github.com/seata/seata/releases/download/v1.6.0/seata-server-1.6.0.tar.gz


docker:

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


部署指南:

https://seata.io/zh-cn/docs/ops/deploy-guide-beginner.html


升级指南:

https://seata.io/zh-cn/docs/ops/upgrade.html


版本的主要更新如下


feature:

  • [#4863] 支持 oracle 和 postgresql 多主键
  • [#4649] seata-server 支持多注册中心
  • [#4779] 支持 Apache Dubbo3
  • [#4479] TCC 注解支持添加在接口和实现类上
  • [#4877] 支持 jdk17
  • [#4914] 支持 mysql 的update join联表更新语法
  • [#4542] 支持 oracle timestamp 类型
  • [#5111] 支持 Nacos contextPath 配置
  • [#4802] dockerfile 支持 arm64


bugfix:

  • [#4780] 修复超时回滚成功后无法发送 TimeoutRollbacked 事件
  • [#4954] 修复 output 表达式错误时,保存执行结果空指针异常
  • [#4817] 修复高版本 springboot 配置不标准的问题
  • [#4838] 修复使用 Statement.executeBatch() 时无法生成 undo log 的问题
  • [#4533] 修复 handleRetryRollbacking 的 event 重复导致的指标数据不准确
  • [#4912] 修复 mysql InsertOnDuplicateUpdate 列名大小写不一致无法正确匹配
  • [#4543] 修复对 Oracle 数据类型 nclob 的支持
  • [#4915] 修复获取不到 ServerRecoveryProperties 属性的问题
  • [#4919] 修复 XID 的 port 和 address 出现 null:0 的情况
  • [#4928] 修复 rpcContext.getClientRMHolderMap NPE 问题
  • [#4953] 修复 InsertOnDuplicateUpdate 可绕过修改主键的问题
  • [#4978] 修复 kryo 支持循环依赖
  • [#4985] 修复 undo_log id 重复的问题
  • [#4874] 修复 OpenJDK 11 启动失败
  • [#5018] 修复启动脚本中 loader path 使用相对路径导致 server 启动失败问题
  • [#5004] 修复 mysql update join 行数据重复的问题
  • [#5032] 修复 mysql InsertOnDuplicateUpdate 中条件参数填充位置计算错误导致的镜像查询 SQL 语句异常问题
  • [#5033] 修复 InsertOnDuplicateUpdate 的 SQL 语句中无插入列字段导致的空指针问题
  • [#5038] 修复 SagaAsyncThreadPoolProperties 冲突问题
  • [#5050] 修复 Saga 模式下全局状态未正确更改成 Committed 问题
  • [#5052] 修复 update join 条件中占位符参数问题
  • [#5031] 修复 InsertOnDuplicateUpdate 中不应该使用 null 值索引作为查询条件
  • [#5075] 修复 InsertOnDuplicateUpdate 无法拦截无主键和唯一索引的 SQL
  • [#5093] 修复 seata server 重启后 accessKey 丢失问题
  • [#5092] 修复当 seata and jpa 共同使用时, AutoConfiguration 的顺序不正确的问题
  • [#5109] 修复当 RM 侧没有加 @GlobalTransactional 报 NPE 的问题
  • [#5098] Druid 禁用 oracle implicit cache
  • [#4860] 修复 metrics tag 覆盖问题
  • [#5028] 修复 insert on duplicate SQL 中 null 值问题
  • [#5078] 修复 SQL 语句中无主键和唯一键拦截问题
  • [#5097] 修复当 Server 重启时 accessKey 丢失问题
  • [#5131] 修复 XAConn 处于 active 状态时无法回滚的问题
  • [#5134] 修复 hikariDataSource 自动代理在某些情况下失效的问题
  • [#5163] 修复高版本 JDK 编译失败的问题


optimize:

  • [#4681] 优化竞争锁过程
  • [#4774] 优化 seataio/seata-server 镜像中的 mysql8 依赖
  • [#4750] 优化 AT 分支释放全局锁不使用 xid
  • [#4790] 添加自动发布 OSSRH github action
  • [#4765] mysql8.0.29 版本及以上 XA 模式不持 connection 至二阶段
  • [#4797] 优化所有 github actions 脚本
  • [#4800] 添加 NOTICE 文件
  • [#4761] 使用 hget 代替 RedisLocker 中的 hmget
  • [#4414] 移除 log4j 依赖
  • [#4836] 优化 BaseTransactionalExecutor#buildLockKey(TableRecords rowsIncludingPK) 方法可读性
  • [#4865] 修复 Saga 可视化设计器 GGEditor 安全漏洞
  • [#4590] 自动降级支持开关支持动态配置
  • [#4490] tccfence 记录表优化成按索引删除
  • [#4911] 添加 header 和 license 检测
  • [#4917] 升级 package-lock.json 修复漏洞
  • [#4924] 优化 pom 依赖
  • [#4932] 抽取部分配置的默认值
  • [#4925] 优化 javadoc 注释
  • [#4921] 修复控制台模块安全漏洞和升级 skywalking-eyes 版本
  • [#4936] 优化存储配置的读取
  • [#4946] 将获取锁时遇到的 sql 异常传递给客户端
  • [#4962] 优化构建配置,并修正 docker 镜像的基础镜像
  • [#4974] 取消 redis 模式下,查询 globalStatus 数量的限制
  • [#4981] 优化当 tcc fence 记录查不到时的错误提示
  • [#4995] 修复 mysql InsertOnDuplicateUpdate 后置镜像查询 SQL 中重复的主键查询条件
  • [#5047] 移除无用代码
  • [#5051] 回滚时 undolog 产生脏写需要抛出不再重试(BranchRollbackFailed_Unretriable)的异常
  • [#5075] 拦截没有主键及唯一索引值的 insert on duplicate update 语句
  • [#5104] ConnectionProxy 脱离对 druid 的依赖
  • [#5124] 支持 oracle 删除 TCC fence 记录表
  • [#4468] 支持 kryo 5.3.0
  • [#4807] 优化镜像和 OSS 仓库发布流水线
  • [#4445] 优化事务超时判断
  • [#4958] 优化超时事务 triggerAfterCommit() 的执行
  • [#4582] 优化 redis 存储模式的事务排序
  • [#4963] 增加 ARM64 流水线 CI 测试
  • [#4434] 移除 seata-server CMS GC 参数


test:

  • [#4411] 测试 Oracle 数据库 AT 模式下类型支持
  • [#4794] 重构代码,尝试修复单元测试 DataSourceProxyTest.getResourceIdTest()
  • [#5101] 修复 zk 注册和配置中心报 ClassNotFoundException 的问题 DataSourceProxyTest.getResourceIdTest()


Relase  Notes 英文版参考:

https://github.com/seata/seata/releases/tag/v1.6.0


致谢


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


  • slievrly
  • renliangyu857
  • wangliang181230
  • a364176773
  • tuwenlin
  • conghuhu
  • a1104321118
  • duanqiaoyanyu
  • robynron
  • lcmvs
  • github-ganyu
  • 1181954449
  • zw201913
  • wingchi-leung
  • AlexStocks
  • liujunlin5168
  • pengten
  • liuqiufeng
  • yujianfei1986
  • Bughue
  • AlbumenJ
  • doubleDimple
  • jsbxyyx
  • tuwenlin
  • CrazyLionLi
  • whxxxxx
  • neillee95
  • crazy-sheep
  • zhangzq7
  • l81893521
  • zhuyoufeng
  • xingfudeshi
  • odidev
  • miaoxueyu


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


社区讨论群


1.png


常用链接


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

相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
2月前
|
测试技术
Seata框架的性能如何?
总的来说,Seata 框架在性能方面具有一定的潜力和优势,但需要根据具体情况进行综合评估和优化,以确保其在实际应用中能够发挥出良好的性能表现。
49 1
|
SQL 存储 Oracle
Seata 1.6.0 正式发布,大幅度提升存储性能
主要新增特性:支持oracle和pgsql多主键;支持seata-server服务注册多注册中心;支持dubbo3;支持jdk17;扩展update join语法支持;扩展多种oracle timestamp类型;支持ARM64镜像。大幅度提升基于DB的存储性能。
Seata 1.6.0 正式发布,大幅度提升存储性能
|
2月前
|
Java 数据库
在Java中使用Seata框架实现分布式事务的详细步骤
通过以上步骤,利用 Seata 框架可以实现较为简单的分布式事务处理。在实际应用中,还需要根据具体业务需求进行更详细的配置和处理。同时,要注意处理各种异常情况,以确保分布式事务的正确执行。
|
5天前
|
Java 关系型数据库 数据库
微服务SpringCloud分布式事务之Seata
SpringCloud+SpringCloudAlibaba的Seata实现分布式事务,步骤超详细,附带视频教程
22 1
|
30天前
|
消息中间件 SQL 中间件
大厂都在用的分布式事务方案,Seata+RocketMQ带你打破10万QPS瓶颈
分布式事务涉及跨多个数据库或服务的操作,确保数据一致性。本地事务通过数据库直接支持ACID特性,而分布式事务则需解决跨服务协调难、高并发压力及性能与一致性权衡等问题。常见的解决方案包括两阶段提交(2PC)、Seata提供的AT和TCC模式、以及基于消息队列的最终一致性方案。这些方法各有优劣,适用于不同业务场景,选择合适的方案需综合考虑业务需求、系统规模和技术团队能力。
209 7
|
2月前
|
存储 Java 关系型数据库
在Spring Boot中整合Seata框架实现分布式事务
可以在 Spring Boot 中成功整合 Seata 框架,实现分布式事务的管理和处理。在实际应用中,还需要根据具体的业务需求和技术架构进行进一步的优化和调整。同时,要注意处理各种可能出现的问题,以保障分布式事务的顺利执行。
101 6
|
2月前
|
数据库
如何在Seata框架中配置分布式事务的隔离级别?
总的来说,配置分布式事务的隔离级别是实现分布式事务管理的重要环节之一,需要认真对待和仔细调整,以满足业务的需求和性能要求。你还可以进一步深入研究和实践 Seata 框架的配置和使用,以更好地应对各种分布式事务场景的挑战。
50 6
|
2月前
|
消息中间件 运维 数据库
Seata框架和其他分布式事务框架有什么区别
Seata框架和其他分布式事务框架有什么区别
36 1
|
4月前
|
SQL NoSQL 数据库
SpringCloud基础6——分布式事务,Seata
分布式事务、ACID原则、CAP定理、Seata、Seata的四种分布式方案:XA、AT、TCC、SAGA模式
SpringCloud基础6——分布式事务,Seata
|
8月前
|
存储 关系型数据库 MySQL
基于Seata实现分布式事务
通过以上步骤,你可以使用 Seata 实现分布式事务,确保在微服务架构中的事务一致性。Seata 支持多种语言和框架,能够满足不同业务场景的需求。欢迎关注威哥爱编程,一起学习成长。
195 1