分布式事务基础概念:
- TC (Transaction Coordinator) -事务协调者: 维护全局和分支事务的状态,协调全局事务提交或回滚。
- TM (Transaction Manager) -事务管理器: 定义全局事务的范围、开始全局事务、提交或回滚全局事务。
- RM (Resource Manager) -资源管理器: 管理分支事务,与TC交谈以注册分支事务和报告分支事务的状态,并驱动分支事务提交或回滚。
AT模型
基本流程图:
【RM】
阶段一
1.先注册一个分支事务到事务协调者TC中
2.记录一个SQL更新前的快照和一个更新后的快照到undo_log日志表中
3.执行SQL并提交数据库事务
4.报告事务状态
阶段二
1.如果此时所有微服务都执行完,并且没有出现异常情况,事务协调者TC通知RM删除undo-log记录。
2.如果此时中途有微服务出现异常情况,则TC会通知RM根据undo-log记录的对应快照恢复数据到更新前。
【TM & TC】
阶段一
-
TM发起并注册全局事务到TC
-
TM调用分支事务(分支事务准备执行业务)
-
RM拦截业务,根据where条件查询原始数据,形成快照。
-
RM执行业务,提交本地事务,释放数据库锁。
-
RM报告本地事务状态给TC
阶段二
-
TM通知TC事务结束
-
TC检查分支事务状态
- 如果都成功,则立即删除快照。
- 如果有分支事务失败,需要回滚。读取快照数据,将快照恢复到数据库。