Seata原理

SEATA事务模式

SEATA事务模式

Seata为用户提供了多种事务模式,包括AT模式、TCC模式、SAGA模式及XA模式,旨在为用户提供一站式解决分布式事务问题的方案。

AT模式

默认事务模式

AT模式是Seata默认采用的事务模式。该模式利用回滚日志(即undo log概念)实现了对已提交事务的回滚操作,从而解决了分布式事务中的一部分关键问题。其具体如何通过回滚日志执行回滚,请参考以下工作机制概述。

AT模式下的两阶段提交协议演化

一阶段提交流程

  • 在一阶段过程中,Seata框架会拦截待执行的“业务SQL”。首先,它会对SQL语义进行解析,识别出SQL将会更新的业务数据。
  • 在实际更新业务数据之前,Seata会将原始业务数据保存为“before image”(前置镜像)。
  • 随后,Seata执行“业务SQL”,更新业务数据。
  • 数据更新完成后,Seata再次捕获更新后的业务数据,并将其保存为“after image”(后置镜像)。
  • 最后,Seata会在数据库事务内部生成相应的行级锁,确保这些操作作为一个不可分割的整体(即原子操作)在本地事务中得以提交,同时释放本地锁和连接资源。

image.png

二阶段提交与回滚

  • 提交阶段:提交操作被异步化处理,能够快速完成。一旦全局事务决定提交,Seata会协调各个本地事务进入提交状态。

image.png

  • 回滚阶段:若需要回滚事务,Seata将依据一阶段记录的回滚日志进行反向补偿。通过对比“before image”和“after image”,系统能够精确地还原事务执行前的数据状态。

image.png

总结来说,在AT模式下,Seata框架自动处理两阶段提交和回滚的所有细节,用户仅需关注编写正常的“业务SQL”,即可无缝融入分布式事务管理之中。

原文链接 https://www.hanyuanhun.cn | https://node.hanyuanhun.cn

posted @   汉源魂  阅读(27)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
点击右上角即可分享
微信分享提示