在 Seata 中主要有以下三种角色,其中TM和RM是作为 Seata 的客户端与业务系统集成在一起,TC 作为 Seata 的服务端独立部署:
事务协调器(TC):维护全局事务的运行状态,负责协调并驱动全局提交或回滚
事务管理器(TM):事务发起方,控制全局事务的范围,负责开启一个全局事务,并最终发起全局提交或回滚全局的决议
资源管理器(RM):事务参与方,管理本地事务正在处理的资源,负责向 TC 注册本地事务、汇报本地事务状态,接收 TC 的命令来驱动本地事务的提交或回滚
Seata 分布式事务的整体执行机制可以大致分为两阶段提交:
① 发起方 TM 向 TC 申请开启一个全局事务,全局事务创建成功并生成唯一的全局事务标识 XID,该 XID 在后续事务的服务调用链路的上下文传播(通过Aop实现)
② RM 向 TC 注册分支事务,汇报资源准备状况,并与 XID 进行绑定(Branch分支事务指分布式事务中每个独立的本地局部事务)
③ TM 向 TC 发起 XID 下的所有分支事务的全局提交或回滚请求(事务一阶段结束)
④ TC 汇总事务信息,决定分布式事务是提交还是回滚;
⑤ TC 通知所有 RM 提交/回滚 资源,事务二阶段结束;