Seata的AT模式的执行流程

86 阅读2分钟

Seata的AT模式是最终一致的分阶段事务模式,且无业务侵入,是Seata的默认模式。‌ AT模式通过在分布式事务的根节点上加锁来保证全局事务的一致性‌。AT模式的原理和设计基于全局事务和分支事务的概念。全局事务负责协调其下的分支事务,确保它们要么一起成功提交,要么一起失败回滚。分支事务则是满足ACID原则的本地事务,由Seata定义的三部分组件管理:Transaction Coordinator(TC)、Transaction Manager(TM)和Resource Manager(RM)。TM控制全局事务的边界,RM控制分支事务,负责分支注册、状态汇报,并接收TC的指令来驱动分支事务的提交和回滚‌。 AT模式的执行过程分为准备阶段、提交阶段和回滚阶段。在准备阶段,Seata向各个参与者发送prepare请求,要求进行事务资源的预留。提交阶段则是由TC调度XID下管辖的全部分支事务完成提交请求。回滚阶段则是在出现错误或需要回滚时,由TC调度全部分支事务进行回滚‌

Snipaste_2024-10-13_20-13-35.png AT模式下,当前分支事务执行流程如下:

一阶段

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

  2. TM调用分支事务

  3. 分支事务准备执行业务SQL

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

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

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

二阶段

  1. TM通知TC事务结束

  2. TC检查分支事务状态

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