简述Seata的AT模型

AT模式是分阶段提交的事务模型,不过缺弥补了XA模型中资源锁定周期过长的缺陷。

1.Seata的AT模型

阶段一RM的工作:
● 注册分支事务
● 记录undo-log(数据快照)
● 执行业务sql并提交
● 报告事务状态
阶段二提交时RM的工作:
● 删除undo-log即可
阶段二回滚时RM的工作:
● 根据undo-log恢复数据到更新前

2.流程梳理

一阶段:

  1. TM发起并注册全局事务到TC
  2. TM调用分支事务
  3. 分支事务准备执行业务SQL
  4. RM拦截业务SQL,根据where条件查询原始数据,形成快照。
  5. RM执行业务SQL,提交本地事务,释放数据库锁。此时 money = 90
  6. RM报告本地事务状态给TC
    二阶段:
  7. TM通知TC事务结束
  8. TC检查分支事务状态
    a. 如果都成功,则立即删除快照
    b. 如果有分支事务失败,需要回滚。读取快照数据({"id": 1, "money": 100}),将快照恢复到数据库。此时数据库再次恢复为100

3.简述AT模式与XA模式最大的区别是什么?

● XA模式一阶段不提交事务,锁定资源;AT模式一阶段直接提交,不锁定资源。
● XA模式依赖数据库机制实现回滚;AT模式利用数据快照实现数据回滚。
● XA模式强一致;AT模式最终一致
可见,AT模式使用起来更加简单,无业务侵入,性能更好。因此企业90%的分布式事务都可以用AT模式来解决。

posted on   重生2024  阅读(10)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示