Seata的AT模式的执行流程

43 阅读1分钟

Seata AT 模式

image.png

概述

AT 模式是 Seata 创新的一种非侵入式的分布式事务解决方案,Seata 在内部做了对数据库操作的代理层,我们使用 Seata AT 模式时,实际上用的是 Seata 自带的数据源代理 DataSourceProxy,Seata 在这层代理中加入了很多逻辑,比如插入回滚 undo_log 日志,检查全局锁等。

本文中,我们将重点介绍 Seata AT 模式的使用,如果您对于 AT 模式原理感兴趣,还请阅读对应于本篇文章的

两阶段提交协议的演变: 一阶段:

  • 事务协调者通知每个事务参与者执行本地事务
  • 本地事务执行完成后报告事务执行状态给事务协调者,此时事务不提交,继续持有数据库锁

二阶段:

  • 事务协调者基于一阶段的报告来判断下一步操作
  • 如果一阶段都成功,则通知所有事务参与者,提交事务
  • 如果一阶段任意一个参与者失败,则通知所有事务参与者回滚事务
  1. 分布式事务发起方发送全局事务开始请求(Begin)给Seata Server,生成全局事务ID(XID)。
  2. 分布式事务发起方执行本地事务前,向Seata发起分支事务注册请求,包括全局事务ID、分支事务ID、参与者信息。
  3. 执行本地事务,成功则向Seata发起分支事务提交请求,失败则发起分支事务回滚请求。
  4. [Seata Server根据请求结果决定全局事务的提交或回滚]