Seata的AT模式的执行流程

144 阅读2分钟

Seata的AT模式是一种无侵入的分布式事务解决方案,它基于两阶段提交协议实现。在AT模式下,用户的业务SQL处理作为一阶段,Seata会根据一阶段的执行结果自动判断二阶段的提交或回滚。以下是AT模式的执行流程图的简要说明:

image.png

  1. 一阶段(准备阶段)

    • 业务数据和回滚日志记录在同一个本地事务中提交,释放本地锁和连接资源。
    • Seata通过代理数据源拦截业务SQL,解析SQL语义,生成前后镜像数据(before image和after image),并保存为undo_log。
    • RM(资源管理器)向TC(事务协调者)注册分支事务,并提交本地事务。
  2. 二阶段(提交阶段)

    • 如果全局事务提交,Seata会异步清理undo_log,完成提交操作。
    • 如果全局事务回滚,RM会使用undo_log中的before image数据进行反向补偿,以完成分支的回滚。

AT模式的特点是:

  • 无侵入性:用户只需关注业务SQL,Seata自动处理事务的提交和回滚。
  • 高性能:一阶段提交后即可释放本地资源,减少了锁的范围,提高了效率。
  • 自动回滚:在二阶段回滚时,Seata会自动根据undo_log生成反向SQL进行数据回滚。

AT模式的执行流程可以通过以下步骤进行可视化:

  • 一阶段:业务SQL执行并记录undo_log,然后提交本地事务。
  • 二阶段提交:删除undo_log,完成事务提交。
  • 二阶段回滚:根据undo_log中的before image数据回滚业务数据。

这种模式适用于多数据库访问的场景,保证了数据的一致性,同时对业务代码无侵入,是Seata中常用的分布式事务解决方案之一。更多详细信息可以参考Seata官方文档。