全局事务服务 GTS 与 Seata 融合的开始

栏目: IT技术 · 发布时间: 4年前

内容简介:GTS(Global Transaction Service 全局事务服务)是阿里云上的分布事务中间件产品,用于实现分布式环境下特别是微服务架构下的高性能事务一致性。简单来讲,Seata 项目 2019 年之初的创建是 GTS 的开源版本,经过一年的演进,GTS 商业版本开始全面提供对 Seata 的支持。

GTS 和 Seata 的关系

Seata(Simple Extensible Autonomous Transaction Architecture)是一款开源的分布式事务解决方案,致力于提供高性能和简单易用的分布式事务服务。 在 GitHub 上拥有超过 1.4 万 Star,毫无疑问是开源社区分布式事务领域最火爆的项目。

GTS(Global Transaction Service 全局事务服务)是阿里云上的分布事务中间件产品,用于实现分布式环境下特别是微服务架构下的高性能事务一致性。

  • 2014 年,阿里巴巴中间件团队发布分布式事务中间件产品 TXC(Taobao Transaction Constructor),为集团内部应用提供服务。

  • 2016 年,TXC 经过产品化改造,以 GTS 的身份登陆阿里云,成为当时业界唯一一款云上分布式事务产品,在阿云里的公有云、专有云解决方案中,开始服务于众多外部客户。

  • 2019 年,阿里巴巴中间件团队基于 TXC 和 GTS 的技术积累,发起了开源项目 Seata(曾用名 Fescar, Seata on GitHub),和社区一起建设这个分布式事务解决方案。 开源项目 Seata 的基础是基于 GTS 架构定义的分布式事务框架以及 GTS 独创的的 AT(Automatic Transaction)模式。

  • Seata 项目经过近一年的发展,收获包括蚂蚁金服分布式事务领域核心技术合作,以及开源社区的大力投入,加入 TCC 和 Saga 模式支持,于 2019 年底发布 GA 版本。

  • 2020 年 2 月,基于 Seata 项目 GA 后的版本,GTS 实现与 Seata 的协调兼容,支持使用 Seata 的应用无缝迁移到云上基于 GTS 提供的服务来高效运行。

简单来讲,Seata 项目 2019 年之初的创建是 GTS 的开源版本,经过一年的演进,GTS 商业版本开始全面提供对 Seata 的支持。

全局事务服务 GTS 与 Seata 融合的开始

GTS 如何实现对 Seata 的支持

接下来,我们全面解读 GTS 是如何实现对 Seata 的支持的。

Seata 定义的分布式事务框架

首先,看一下 Seata 定义的分布式事务框架。

核心组件定义

全局事务服务 GTS 与 Seata 融合的开始

Seata 明确定义分布式事务的 3 个核心组件:

1、Transaction Coordinator (TC): 事务协调器,维护全局事务的运行状态,负责协调并驱动全局事务的提交或回滚。

2、Transaction Manager (TM): 控制全局事务的边界,负责开启一个全局事务,并最终发起全局提交或全局回滚的决议。

3、Resource Manager (RM): 控制分支事务,负责分支注册、状态汇报,并接收事务协调器的指令,驱动分支(本地)事务的提交和回滚。

一个典型的事务过程:

1、TM 向 TC 申请开启一个全局事务,全局事务创建成功并生成一个全局唯一的 XID。

2、XID 在微服务调用链路的上下文中传播。

3、RM 向 TC 注册分支事务,将其纳入 XID 对应全局事务的管辖。

4、TM 向 TC 发起针对 XID 的全局提交或回滚决议。

5、TC 调度 XID 下管辖的全部分支事务完成提交或回滚请求。

事务模型和模式

基于架构上定义的 3 个角色,Seata 把分布式事务抽象成这样一个模型。

全局事务服务 GTS 与 Seata 融合的开始

TM 定义全局事务的边界。

RM 负责定义分支事务的边界和行为。

TC 跟 TM 和 RM 交互(开启、提交、回滚全局事务; 分支注册、状态上报和分支的提交、回滚),做全局的协调。

所谓 Seata 的 事务模式,准确地讲,应该是这个框架下,RM 驱动的 分支事务的不同行为模式,应该是 事务(分支)模式。

Seata 定义的事务模式

AT 模式

AT 模式 RM 驱动分支事务的行为:

执行阶段:

  • 代理 JDBC 数据源,解析业务 SQL,生成更新前后的镜像数据,形成 UNDO LOG。

  • 向 TC 注册分支。

  • 分支注册成功后,把业务数据的更新和 UNDO LOG 放在同一个本地事务中提交。

完成阶段:

  • 全局提交,收到 TC 的分支提交请求,异步删除相应分支的 UNDO LOG。

  • 全局回滚,收到 TC 的分支回滚请求,查询分支对应的 UNDO LOG 记录,生成补偿回滚的 SQL 语句,执行分支回滚并返回结果给 TC。

    全局事务服务 GTS 与 Seata 融合的开始

TCC 模式

TCC 模式 RM 驱动分支事务的行为:

执行阶段:

  • 向 TC 注册分支。

  • 执行业务定义的 Try 方法。

  • 向 TC 上报 Try 方法执行情况: 成功或失败。

完成阶段:

  • 全局提交,收到 TC 的分支提交请求,执行业务定义的 Confirm 方法。

  • 全局回滚,收到 TC 的分支回滚请求,执行业务定义的 Cancel 方法。

全局事务服务 GTS 与 Seata 融合的开始

Saga 模式

Saga 模式 RM 驱动分支事务的行为:

执行阶段:

  • 向 TC 注册分支。

  • 执行业务方法。

  • 向 TC 上报业务方法执行情况: 成功或失败。

完成阶段:

  • 全局提交,RM 不需要做事情。

  • 全局回滚,收到 TC 的分支回滚请求,执行业务定义的补偿回滚方法。

全局事务服务 GTS 与 Seata 融合的开始

XA 模式

XA 模式 RM 驱动分支事务的行为:

执行阶段:

  • 向 TC 注册分支。

  • XA start,执行业务 SQL,XA end。

  • XA prepare,并向 TC 上报 XA 分支的执行情况: 成功或失败。

完成阶段:

  • 收到 TC 的分支提交请求,XA commit。

  • 收到 TC 的分支回滚请求,XA rollback。

全局事务服务 GTS 与 Seata 融合的开始

TC 在 Seata 架构中的重要作用

Seata 架构中的 TM 和 RM 和应用部署在一起,应用根据业务需求,选择合适的分布式事务模式来解决数据一致性问题。

从上述 4 类已经或即将被 Seata 框架支持的分布式事务模式的工作机制可以看到:

无论使用哪处模式,都离不开一个稳定高效的 TC 提供服务。 这些服务包括(但不限于):

  • 记录全局事务状态

  • 记录事务分支的注册

  • 驱动事务分支进行最终的提交或回滚

  • 事务链路监控

  • 异常事务的恢复

  • 全局事务超时检测

  • 全局事务间隔离机制

分布式事务的协调机制被 Seata 框架定义为一项标准化的服务。 这项服务可以像 ZooKeeper 独立部署运维,给应用的分布式系统提供事务服务。

GTS 带给 Seata 用户的价值

GTS 的架构

Seata 定义的事务协议,如下图所示:

全局事务服务 GTS 与 Seata 融合的开始

Seata 的分布式事务框架源自 GTS,二者的底层架构和事务协议是完全一致的。

  • GTS 把 TM 和 RM 的实现统一打包到 GTS SDK 中。

  • GTS 的服务端就是 TC 的一个高可用实现。

GTS 的事务协议,如下图所示:

全局事务服务 GTS 与 Seata 融合的开始

依托于阿里云的基础设施,GTS Server 以多副本、高可用集群形态部署,提供高质量的事务协调服务。

GTS 作为 Seata 的 TC

架构和协议层面的一致,使得 GTS 可以很自然地提供对 Seata 应用的事务协调支持。

只要实现具体网络通信机制上的兼容适配,就可以完整支撑 Seata 应用运行在 GTS 服务之上。

Seata 应用迁移到云上使用 GTS 服务不需要做任何编程改造,仅仅是把自运维的 Seata 的 TC Server 替换为 GTS 提供的高性能、高可靠、高可用的云服务。

全局事务服务 GTS 与 Seata 融合的开始

GTS 的价值

GTS 作为云原生分布式事务服务的价值

随着企业的发展,企业业务架构面临数据、服务的分布化,几乎无可避免地要遇到分布式架构带来的数据一致性问题。

GTS 开创性地把分布式事务问题从业务中剥离出来,作为一个独立的技术切面来单独管理,以服务的形式给构建在云上的应用提供简单、易用、高效的分布式事务解决方案。

GTS 给业务应用带来的价值体现在以下几个方面:

  • 架构复杂度降低: 分布式事务这个切面的技术问题,全部收敛到 GTS 提供的服务来解决。

  • 设计和开发成本减轻: 业务逻辑的设计和开发,完全不需要针对是否涉及分布式事务而做任何额外的事情,对业务 0 侵入 。

  • 项目交付、迭代速度加快: 归因于上述两点,项目得以很快交付和迭代。 GTS 赋予业务应用 快速试错 的能力,在这个商业机会瞬息万变的时代,显得尤为重要。

设想一个典型的云原生企业应用的成长路径:

全局事务服务 GTS 与 Seata 融合的开始

  • 1.0: 单体应用,快速上线,这个时候完全不涉及分布式事务。

  • 2.0: 单个数据库无法支撑,数据分布到多个数据库,产生分布式事务问题。

  • 3.0: 微服务化,进一步产生跨服务的分布式事务。

  • 4.0: 跨应用的整合,成为 SaaS 或 FaaS 的平台,在更大的范围,产生分布式事务问题。

基于 GTS 提供的分布式事务服务,企业发展各阶段产生的不同场景下的数据一致性问题,可以得到一站式的解决。 这使得业务可以平滑自然地,像搭积木一样成长起来。

从上面示例可以看到: GTS 实际上是把分布式事务(或者说分布式场景下的数据一致性)能力,作为一种 云原生 的服务,提供给生长在云上的应用,让分布式事务不再成为业务要面临的一个令人头疼的问题,而成为一种可以弹性伸缩,按需取用的服务能力。

GTS 支持 Seata 带来的价值

GTS 提供对开源解决方案 Seata 的兼容支持后,给 GTS 商业用户和 Seata 开源用户之间建立了一座桥梁,给两类用户创造更多价值。

对于既有的和潜在的 GTS 用户:

  • 不必担心厂商的 Lock-in,核心技术完全符合开源的开放标准。

  • 基于开源的解决方案可以在社区得到更多技术支持。

  • 更容易基于开源项目进行 POC 验证,构建开发、测试环境。

对于既有的和潜在的 Seata 用户:

1、基于 Seata 构建的业务系统,可以灵活进行云上或云下部署,代码 0 修改。

2、迁移上云,基于 GTS 提供的服务,可以完全省去运维 Seata TC Server 的成本:

  • 部署 Seata TC Server 所需的机器、网络、数据库等资源成本

  • 运维 Seata TC Server 的人力资源成本

  • 进 Seata 版本,升级 Seata TC Server 的研发、测试成本

3、另外,GTS 给 Seata 应用提供更多增值服务能力:

  • 按量付费: 不使用不产生任何费用

  • 自动扩容缩容: 服务能力的扩容和缩容透明化

  • 监控分析: 控制台提供事务数据的统计、监视、异常事务控制、链路分析等企业级 特性

发展路线图

开源项目 Seata 和商业产品 GTS 正在并行向前演进:

1、Seata 正在打造新的分布式事务模式: XA 模式,将在不久的 1.x 版本发布(预计 1.2 或 1.3)。

2、GTS 基于开源的 Seata 内核,融合既有的和新的商业特性,打造全新的 3.0 版本。 3.0 版本发布后,将支持 Seata 全部事务模式: AT、TCC、Saga 和 XA,实现开源版本和商业版本的融合。

3、版本融合后,GTS 每个版本都的发布都将实现对最新稳定开源版本的兼容支持。

全局事务服务 GTS 与 Seata 融合的开始

实践

GTS 的 SDK 2.9.0 版本支持基于 Seata 的应用使用 AT 模式,运行在 GTS 服务上。 参考样例:

https://help.aliyun.com/document_detail/151599.html?spm=a2c4g.11174283.6.563.a9fe735d0uOm72

另外,基于 GTS 构建微服务分布式事务解决方案的更多实践,请参考阿里云最佳实践的推荐,详情参考:

https://www.aliyun.com/acts/best-practice/preview?id=387142

官网地址参考:

https://www.aliyun.com/aliware/txc

本文作者:

煊檍,GitHub ID: sharajava,阿里巴巴中件间 GTS 研发团队负责人,SEATA 开源项目发起人,曾在 Oracle 北京研发中心多年,从事 WebLogic 核心研发工作。 长期专注于中间件,尤其是分布式事务领域的技术实践。

如果大家觉得这篇文章对你有帮助,你的关注和转发是对我最大的支持,O(∩_∩)O:

全局事务服务 GTS 与 Seata 融合的开始

Tips:

# 点下“ 看”:heart:


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Head First WordPress

Head First WordPress

Siarto Jeff / O'Reilly Media / 2010-02-15 / USD 34.99

Whether you're promoting your business or writing about your travel adventures, "Head First WordPress" will teach you not only how to make your blog look unique and attention-grabbing, but also how to......一起来看看 《Head First WordPress》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

CSS 压缩/解压工具
CSS 压缩/解压工具

在线压缩/解压 CSS 代码

SHA 加密
SHA 加密

SHA 加密工具