一、Seata 介绍
Seata 是阿里巴巴在2019年开源的解决分布式事务问题的框架。Seata 作为统一的事务协调者,与多个分支事务通信,检测每个分支事务的执行状态,保证全局事务下的每一个分支事务同时成功或失败即可。
在Seata的事务管理中有三个重要的角色:
- TC (Transaction Coordinator) - 事务协调者:维护全局和分支事务的状态,协调全局事务提交或回滚。
- TM (Transaction Manager) - 事务管理器:定义全局事务的范围、开始全局事务、提交或回滚全局事务。
- RM (Resource Manager) - 资源管理器:管理分支事务,与TC交谈以注册分支事务和报告分支事务的状态,并驱动分支事务提交或回滚。
二、Seata的AT模式
AT模式的工作原理主要包括两个阶段:一阶段和二阶段。在一阶段,用户执行业务SQL,Seata框架记录必要的回滚日志。在二阶段,如果业务操作成功,则提交事务;如果失败,则根据回滚日志进行回滚操作,从而达到事务的最终一致性。
- 阶段一
RM的工作:
- 注册分支事务
- 记录undo-log(数据快照)
- 执行业务sql并提交
- 报告事务状态
2.1 阶段二提交时RM的工作:
- 删除undo-log即可
2.2 阶段二回滚时RM的工作:
- 根据undo-log恢复数据到更新前