Seata AT 模式
概述
AT 模式是 Seata 创新的一种非侵入式的分布式事务解决方案,Seata 在内部做了对数据库操作的代理层,我们使用 Seata AT 模式时,实际上用的是 Seata 自带的数据源代理 DataSourceProxy,Seata 在这层代理中加入了很多逻辑,比如插入回滚 undo_log 日志,检查全局锁等。
本文中,我们将重点介绍 Seata AT 模式的使用,如果您对于 AT 模式原理感兴趣,还请阅读对应于本篇文章的
两阶段提交协议的演变: 一阶段:
- 事务协调者通知每个事务参与者执行本地事务
- 本地事务执行完成后报告事务执行状态给事务协调者,此时事务不提交,继续持有数据库锁
二阶段:
- 事务协调者基于一阶段的报告来判断下一步操作
- 如果一阶段都成功,则通知所有事务参与者,提交事务
- 如果一阶段任意一个参与者失败,则通知所有事务参与者回滚事务
- 分布式事务发起方发送全局事务开始请求(Begin)给Seata Server,生成全局事务ID(XID)。
- 分布式事务发起方执行本地事务前,向Seata发起分支事务注册请求,包括全局事务ID、分支事务ID、参与者信息。
- 执行本地事务,成功则向Seata发起分支事务提交请求,失败则发起分支事务回滚请求。
- [Seata Server根据请求结果决定全局事务的提交或回滚]