分布式事务 解决方案Seta-AT模式

293 阅读1分钟

分布式事务基础概念:

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

AT模型

基本流程图:

image.png

【RM】

阶段一

1.先注册一个分支事务到事务协调者TC中

2.记录一个SQL更新前的快照和一个更新后的快照到undo_log日志表中

3.执行SQL并提交数据库事务

4.报告事务状态

阶段二

1.如果此时所有微服务都执行完,并且没有出现异常情况,事务协调者TC通知RM删除undo-log记录。

2.如果此时中途有微服务出现异常情况,则TC会通知RM根据undo-log记录的对应快照恢复数据到更新前。

【TM & TC】

阶段一

  1. TM发起并注册全局事务到TC

  2. TM调用分支事务(分支事务准备执行业务)

  3. RM拦截业务,根据where条件查询原始数据,形成快照。

  4. RM执行业务,提交本地事务,释放数据库锁。

  5. RM报告本地事务状态给TC

阶段二

  1. TM通知TC事务结束

  2. TC检查分支事务状态

    • 如果都成功,则立即删除快照。
    • 如果有分支事务失败,需要回滚。读取快照数据,将快照恢复到数据库。