Seata的AT模式的执行流程
在Seata的事务管理中有三个重要的角色:
- TC (Transaction Coordinator) -事务协调者:维护全局和分支事务的状态,协调全局事务提交或回滚。
- TM (Transaction Manager) -事务管理器:定义全局事务的范围、开始全局事务、提交或回滚全局事务。
- RM (Resource Manager) -资源管理器:管理分支事务,与TC交谈以注册分支事务和报告分支事务的状态,并驱动分支事务提交或回滚。
AT模式
AT模式同样是分阶段提交的事务模型,不过缺弥补了XA模型中资源锁定周期过长的缺陷。
Seata的AT模型
基本流程图:
阶段一RM的工作:
1.先会注册一个分支事务到事务协调者TC中
2.记录一个SQL更新前的快照和一个更新后的快照到undo_log日志表中
3.执行SQL并提交数据库事务
4.报告事务状态
阶段二RM的工作:
1.如果此时所有微服务都执行完,并且没有出现异常情况,事务协调者TC通知RM删除undo-log记录。
2.如果此时中途有微服务出现异常情况,则TC会通知RM根据undo-log记录的对应快照恢复数据到更新前。