Seata-go 1.1.0 发布,补齐 AT 模式支持

简介: Seata-go 1.1.0 版本补齐了 AT 模式下对 Multi Delete、Multi Update、Insert on Update 和 Select for Update 的支持。至此 Seata-go 的 AT 模式与 Seata AT 模式全面对齐。

图片

发布概览

Seata-go 1.1.0 版本补齐了 AT 模式下对 Multi Delete、Multi Update、Insert on Update 和 Select for Update 的支持。至此 Seata-go 的 AT 模式与 Seata AT 模式全面对齐。

此版本给出了在 Dubbo-go/Gin/gRPC 中使用 Seata-go TCC/AT 两种模式的示例。

示例链接:https://github.com/seata/seata-go-samples/tree/main/at

AT 模式:

AT 模式支持并集成了 Multi Delete SQL 语法
AT 模式支持并集成了 Multi Update SQL 语法
AT 模式支持并集成了 Insert on Update SQL 语法
AT 模式支持并集成了 Select for Update SQL 语法

配置文件:

完善了更多地方读取配置文件功能

版本的主要更新如下

Feature:

[#491] 支持查询全局事务锁
https://github.com/seata/seata-go/pull/491

[#482] 支持 AT 模式 Multi Delete SQL 执行器
https://github.com/seata/seata-go/pull/482

[#481] 支持 AT 模式 Multi Update SQL 执行器
https://github.com/seata/seata-go/pull/481

[#478] 支持 AT 模式 Select for Update SQL 执行器
https://github.com/seata/seata-go/pull/478

[#477] 支持 Undo Log 的 Json 序列化方式
https://github.com/seata/seata-go/pull/477

[#456] 支持 AT 模式 Insert on Update SQL 执行器
https://github.com/seata/seata-go/pull/456

[#444] 支持 BZip 压缩算法
https://github.com/seata/seata-go/pull/444

[#436] 支持读取 RM 相关的配置文件
https://github.com/seata/seata-go/pull/436

[#433] 支持 XA 连接管理器
https://github.com/seata/seata-go/pull/433

[#430] 支持读取 Getty 相关的配置文件
https://github.com/seata/seata-go/pull/430

Bugfix:

[#509] 修复 AT 模式下执行 Insert on Update 时 Undo Log 的 SQLType 字段的问题
https://github.com/seata/seata-go/pull/509

[#495] 修复 Undo Log 的 SQLType 字段的问题
https://github.com/seata/seata-go/pull/495

[#487] 修复 AT 执行时出现的问题
https://github.com/seata/seata-go/pull/487

[#472] 修复全局事务中上下文丢失值问题
https://github.com/seata/seata-go/pull/472

[#461] 修复 Error_Code_test 中变量未定义导致的 CI 失败问题
https://github.com/seata/seata-go/pull/461

[#459] 修复 Error 日志重复打印问题
https://github.com/seata/seata-go/pull/459

[#452] 修复 AT 模式执行 Insert SQL 时 ID 增的报错问题
https://github.com/seata/seata-go/pull/452

Optimize:

Seata-go 的示例项目已经全部迁移到新的仓库:https://github.com/seata/seata-go-samples

[#507] 优化 AT 模式 Multiple Update SQL 执行器
https://github.com/seata/seata-go/pull/507

[#505] 优化 AT 模式 Multi SQL 执行器
https://github.com/seata/seata-go/pull/505

[#453] 优化 Message Type 和 Transaction error Code 枚举值
https://github.com/seata/seata-go/pull/453

[#447] 优化数据源初始化流程
https://github.com/seata/seata-go/pull/447

[#466] 优化变量的命名
https://github.com/seata/seata-go/pull/466

Test:

[#445] 添加 Transaction error Code 的单元测试
https://github.com/seata/seata-go/pull/445

Doc:

[#492] 更新 Readme 文件的已完成功能列表
https://github.com/seata/seata-go/pull/492

[#489] 添加 1.1.0 版本的 Change Log
https://github.com/seata/seata-go/pull/489

英文版:https://github.com/seata/seata-go/releases/tag/v1.1.0

致谢

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

@luky116
https://github.com/luky116

@georgehao
https://github.com/georgehao

@lxfeng1997
https://github.com/lxfeng1997

@106umao
https://github.com/106umao

@wang1309
https://github.com/wang1309

@iSuperCoder
https://github.com/iSuperCoder

@Charlie17Li
https://github.com/Charlie17Li

@Code-Fight
https://github.com/Code-Fight

@Kirhaku
https://github.com/Kirhaku

@Vaderkai
https://github.com/VaderKai

@springrain
https://github.com/springrain

@Shaozhou Hu
https://github.com/raspberry-hu

@finkyky
https://github.com/Finkyky

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

未来展望

Seata 社区近期与不少国内 go 语言微服务框架以及 ORM 框架背后的开发社区达成合作,比如 GORM 框架,已经集成到了 Sample 中,后续会将更多的 ORM 框架集成在 Seata-go-Samples 项目中。与 MOSN 社区的合作也在推进中,可实现真正的基于 Seata 的 Transaction Mesh。

Seata-go-samples 集成到 Seata-go GitHub Actions 的集成测试环境,目前已经在进行中,用于测试每个 PR,保证系统的兼容性与稳定性。

预计在 4 月中旬发布的 Seata-go v1.2.0,将实现 XA 分布式事务模式。Seata-go 正在开发中的 Saga 模式,将在现有的 Seata Saga 模式之上实现一定的突破:实现基于工作流的微服务编排能力。

当前的 Saga 模式仅实现了服务编排的正向推进与反向 Rollback 能力,更进一步的服务编排则可以实现 DAG、定时任务、任务批量调度,覆盖工作流的所有流程,提升用户在 Seata 这个平台上的使用体验。目前 Seata-go 依赖于 Seata Java 的 TC,按照这个工作计划,可能需要在未来的 Seata-go 版本中实现一个功能更强大的 TC 调度。

Seata 多语言版本,目前发展最快的就是 Seata-go,其次成熟度较高的是 Seata-php,目前发展比较快的还有 Seata-js,欢迎对开源感兴趣的朋友加入 Seata 开源建设中来。

常用链接

Seata:

http://github.com/seata/seata

https://github.com/seata/seata-php

https://github.com/seata/seata-js

https://github.com/seata/seata-go

Samples:

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

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

官网:

https://seata.io/

投稿

欢迎大家将 Seata/Seata-go/Seata-php/Seata-js 相关的实践文章投稿至:https://www.yuque.com/fred-x/ngfgiz/le1h4u5kn0xyhhoh

Seata Star 一下
https://github.com/seata/seata-go

本周推荐阅读

图片
Seata-go 发布 1.0.3,补齐 AT 模式

图片
Seata-go 1.0 重磅发版

图片
Seata 多语言体系建设

图片
Seata AT 模式代码级详解

相关文章
|
21天前
|
数据库 微服务
SEATA模式
Seata 是一款开源的分布式事务解决方案,支持多种事务模式以适应不同的应用场景。其主要模式包括:AT(TCC)模式,事务分三阶段执行;TCC 模式,提供更灵活的事务控制;SAGA 模式,基于状态机实现跨服务的事务一致性;XA 模式,采用传统两阶段提交协议确保数据一致性。
36 5
|
4月前
|
缓存 NoSQL Go
通过 SingleFlight 模式学习 Go 并发编程
通过 SingleFlight 模式学习 Go 并发编程
|
27天前
Seata框架在AT模式下是如何保证数据一致性的?
通过以上这些机制的协同作用,Seata 在 AT 模式下能够有效地保证数据的一致性,确保分布式事务的可靠执行。你还可以进一步深入研究 Seata 的具体实现细节,以更好地理解其数据一致性保障的原理。
37 3
|
1月前
|
Go 调度 开发者
探索Go语言中的并发模式:goroutine与channel
在本文中,我们将深入探讨Go语言中的核心并发特性——goroutine和channel。不同于传统的并发模型,Go语言的并发机制以其简洁性和高效性著称。本文将通过实际代码示例,展示如何利用goroutine实现轻量级的并发执行,以及如何通过channel安全地在goroutine之间传递数据。摘要部分将概述这些概念,并提示读者本文将提供哪些具体的技术洞见。
|
2月前
|
安全 Go 调度
探索Go语言的并发模式:协程与通道的协同作用
Go语言以其并发能力闻名于世,而协程(goroutine)和通道(channel)是实现并发的两大利器。本文将深入了解Go语言中协程的轻量级特性,探讨如何利用通道进行协程间的安全通信,并通过实际案例演示如何将这两者结合起来,构建高效且可靠的并发系统。
|
2月前
|
安全 Go 开发者
破译Go语言中的并发模式:从入门到精通
在这篇技术性文章中,我们将跳过常规的摘要模式,直接带你进入Go语言的并发世界。你将不会看到枯燥的介绍,而是一段代码的旅程,从Go的并发基础构建块(goroutine和channel)开始,到高级模式的实践应用,我们共同探索如何高效地使用Go来处理并发任务。准备好,让Go带你飞。
|
4月前
|
存储 Unix 测试技术
解释Go中常见的I/O模式
解释Go中常见的I/O模式
|
5月前
|
设计模式 Go
Go语言设计模式:使用Option模式简化类的初始化
在Go语言中,面对构造函数参数过多导致的复杂性问题,可以采用Option模式。Option模式通过函数选项提供灵活的配置,增强了构造函数的可读性和可扩展性。以`Foo`为例,通过定义如`WithName`、`WithAge`、`WithDB`等设置器函数,调用者可以选择性地传递所需参数,避免了记忆参数顺序和类型。这种模式提升了代码的维护性和灵活性,特别是在处理多配置场景时。
77 8
|
4月前
|
缓存 算法 Go