在 Alibaba Spring Cloud Seata 中,Transaction Manager ™ 是分布式事务管理的关键组件之一,主要负责全局事务的发起、提交和回滚。它是分布式事务的入口,定义全局事务的边界。
以下是对 TM 的详细解析,包括它的功能、工作流程和实现方法:
1. TM 的核心功能
-
事务发起:
- TM 发起全局事务请求,向 Transaction Coordinator (TC) 注册全局事务,并获得一个唯一的事务 ID(
XID
)。
- TM 发起全局事务请求,向 Transaction Coordinator (TC) 注册全局事务,并获得一个唯一的事务 ID(
-
事务边界管理:
- TM 负责定义全局事务的开始和结束(提交或回滚)。
-
事务状态协调:
- 根据业务逻辑的执行结果,通知 TC 决定是提交还是回滚全局事务。
-
异常处理:
- 如果业务逻辑中出现异常,TM 捕获异常并通知 TC 回滚全局事务。
2. TM 的工作流程
以下是 TM 的典型工作流程:
-
开始全局事务:
- TM 调用 TC 的
begin
方法注册全局事务。 - TC 返回唯一的事务 ID(
XID
),TM 将其传递给事务上下文。
- TM 调用 TC 的
-
分支事务注册:
- TM 将
XID
注入到分支事务中。 - 分支事务通过 RM 注册到 TC。
- TM 将
-
分支事务执行:
- 各服务在本地完成分支事务,并将结果(成功或失败)报告给 TC。
-
全局事务提交或回滚:
- 如果所有分支事务成功,TM 通知 TC 提交全局事务。
- 如果任一分支事务失败,TM 通知 TC 回滚全局事务。
3. TM 的实现方法
在 Spring Cloud Alibaba 中,TM 的实现非常简单,主要通过 @GlobalTransactional
注解 来定义全局事务边界。
3.1 引入依赖
在 pom.xml
中添加 Seata 的 Spring Boot Starter:
<dependency>
<groupId>io.seata</groupId>
<artifactId>seata-spring-boot-starter</artifactId>
<version>1.6.1</version>