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

news2024/12/28 19:09:24

作者: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 和建议,非常感谢大家。

社区讨论群

在这里插入图片描述

常用链接

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

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

芯片+步进电机档位控制实验

1、系统功能 目的:学习步进电机的控制。 使用设备:步进电机、两位共阴数码管、按键 功能:驱动步进电机以不同转速(4档)转动,并将当前档位用数码管显示 (1)按键 KEY1 作为启动和停止的切换按键;…

【Git】Git概述与安装

1、Git 概述 Git 是一个免费的、开源的分布式版本控制系统,可以快速高效地处理从小型到大型的各种项目。 Git 易于学习,占地面积小,性能极快。 它具有廉价的本地库,方便的暂存区域和多个工作流分支等特性。其性能优于 Subversio…

SwitchResX for Mac 屏幕分辨率修改工具

前言 SwitchResX V4.12.1 是Mac上一款功能强大的屏幕分辨率修改软件,可以为您提供控制显示器分辨率所需的所有工具。在switchresx帮助下,您可以管理无论是Mac Retina显示器,Cinema Displays还是电视机甚至投影仪的任何分辨率。而且switchres…

C语言-三子棋

文章目录三子棋一、问题描述二、基本流程在写三子棋的代码之前,我们来看看实现这个游戏的逻辑:三、步骤1. 菜单界面2. 创建棋盘3. 棋盘初始化4.打印棋盘(1)简陋棋盘:(2)自己打印棋盘:5.玩家落子6.电脑落子7.判断胜负1) 判定是否和…

CAPL学习之路-测试功能集函数(最终篇,其他的一些函数介绍)

TestSetEcuOffline 断开ECU与总线的连接 这个ecu是仿真ecu,不是真实ecu哦! testcase TCExample() {testSetEcuOffline(Engine); }void MainTest () {TCExample(); }Trace窗口: TestSetEcuOnline 将ECU连接到总线 testGetCurrentCycle 返回测试的当前周期 这里不管怎么试都返…

【目标检测】TOOD:Task-aligned One-stage Object Detection

TOOD:Task-aligned One-stage Object Detection 论文题目:《TOOD:Task-aligned One-stage Object Detection》——任务对齐的单阶段目标检测 论文地址: https://arxiv.org/abs/2108.07755 论文代码: https://github.com/fcjian/TOOD 1、前言…

优秀的 Verilog/FPGA开源项目介绍(三十六)-RISC-V(新增一)

关于RISC-V的二三事risc-v官网❝https://riscv.org/RISC-V(跟我读:“risk----------------five”)是一个基于精简指令集(RISC)原则的开源指令集架构(ISA)。这里要明确两个概念:指令集…

基于VC++的3D地形绘制与纹理贴图

前言随着地理信息系统产业的发展,三维产品也在生活中处处吸引着我们的眼球。作为数字城市的核心内容,城市模型的构建成为了目前研究的热点。OpenGL是独立于操作系统和硬件环境的三维图形库,其为实现逼真的三维绘制效果和建立交互的三维场景提…

ES6 课程概述④

文章目录6-1. 对象解构什么是解构在解构中使用默认值非同名属性解构7-2. 共享符号7-3. 知名(公共、具名)符号[回顾]事件循环8-1. 事件和回调函数的缺陷8-2. 异步处理的通用模型8-3. Promise 的基本使用8-4. Promise 的串联8-5. Promise 的其他 api原型成…

通关手册 | 祝我通关成功!!!

Framework of MLLoss on training data1. large1.1 Model Bias1.2 Optimization2. smallLoss on testing data2.1 large2.1.1 overfitting2.1.2 mismatch2.2 small通关手册:祝我通关成功!!! Loss on training data 1. large 1.1…

Vue--》Vue3生命周期以及其它组合API的讲解

目录 生命周期 自定义hook函数 toRef shallowReactive与shallowRef readonly与shallReadonly toRaw与markRaw 生命周期 Vue3.0中可以继续使用Vue2.x中的生命周期钩子,但是有两个被更名:Vue2中的beforeDestroy改名为:beforeUnmount&…

【数字孪生百科】可视化图表知识科普——Pareto图(Pareto Chart)

简介Pareto图(Pareto Chart)又称帕累托图、排列图,是一种特殊类型的条形图。图中标绘的值是按照事件发生的频率排序而成,显示由于各种原因引起的缺陷数量或不一致的排列顺序。Pareto图是根据 Vilfredo Pareto 命名的,他…

Go语言设计与实现 --Goroutine

Goroutine是GMP模型中的G,是属于用户态的线程,由Go runtime管理,而不是操作系统管理。 数据结构 type g struct {goid int64 // 唯一的goroutine的IDsched gobuf // goroutine切换时,用于保存g的上下文stack stack // 栈gopc…

Android Studio调用so库中方法

一、JNI规范so库调用 在 Android Studio生成自己的so库 中已经创建了自己的so库,这是一个JNI规范的so库,可以直接将so库放到libs中,并按照上面文章中MainActivity中的调用方法使用。 1、build.gradle(app)配置 andro…

SHELL脚本学习 --- 第六次作业(正则和sed)

SHELL脚本学习 — 第六次作业 思路: 作业1: 1,正则匹配h或H即可 2,sh$匹配以sh结尾 3,使用[[:space:]]匹配空格,[^[:space:]]匹配非空格 4,^to开头,中间.匹配任意字符0次或多次&…

Java一学就会系列:介绍与第一个java程序

系列文章目录 java环境-jdk环境安装与配置(jdk1.8) 文章目录系列文章目录前言一、JAVA是什么?二、环境安装三、开发工具1. Eclipse(推荐)2. IntelliJ IDEA (收费)四、第一个Java程序总结前言 …

搭建Django项目——实现简单的API访问

1、创建Django项目 打开pycharm,新建Django项目,可以选择一个虚拟环境 建完之后目录如下: 2、创建应用,我这里命名为demo 在命令行执行 python manage.py startapp demo执行之后,会发现项目目录下多了demo文件夹…

Linux小黑板(6):软硬链接

"飞吧,去寻觅红色的流星!"一、软硬链接简介软链接:软链接又叫符号链接,这个文件包含了另一个文件的路径名。可以是任意文件或目录,可以链接不同文件系统的文件。软链接硬链接:硬链接(hard link,也称链接&…

美创科技深度参编,中国信通院《数据安全治理实践指南(2.0)》发布

1月5日,由中国信息通信研究院、中国通信标准化协会指导,中国通信标准化协会大数据技术标准推进委员会主办,数据安全推进计划承办的第二届数据安全治理峰会成功召开,多项数据安全研究重要成果发布。会上,美创科技参与编…

MyBatis中数组套数组的格式

数组套数组的形式写法 1.dao层 List<Regulation> queryAllRegulations(); 配置 <resultMap id"RegulationResultMap" type"com.elfsack.cs.dto.allot.Regulation"><result column"shop_code" property"shopCode" /…