Seata的AT模式的执行流程

94 阅读1分钟

一、Seata 介绍

Seata 是阿里巴巴在2019年开源的解决分布式事务问题的框架。Seata 作为统一的事务协调者,与多个分支事务通信,检测每个分支事务的执行状态,保证全局事务下的每一个分支事务同时成功或失败即可。

在Seata的事务管理中有三个重要的角色:

  • TC (Transaction Coordinator) - 事务协调者:维护全局和分支事务的状态,协调全局事务提交或回滚。
  • TM (Transaction Manager) - 事务管理器:定义全局事务的范围、开始全局事务、提交或回滚全局事务。
  • RM (Resource Manager) - 资源管理器:管理分支事务,与TC交谈以注册分支事务和报告分支事务的状态,并驱动分支事务提交或回滚。

image.png

二、Seata的AT模式

AT模式的工作原理主要包括两个阶段:一阶段和二阶段。在一阶段,用户执行业务SQL,Seata框架记录必要的回滚日志。在二阶段,如果业务操作成功,则提交事务;如果失败,则根据回滚日志进行回滚操作,从而达到事务的最终一致性。

image.png

  1. 阶段一RM的工作:
  • 注册分支事务
  • 记录undo-log(数据快照)
  • 执行业务sql并提交
  • 报告事务状态

2.1 阶段二提交时RM的工作:

  • 删除undo-log即可

2.2 阶段二回滚时RM的工作:

  • 根据undo-log恢复数据到更新前