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”,即可无缝融入分布式事务管理之中。

原文链接 汉源魂博客 | 汉源魂-专注于分享-spring-docsify-boot

  • 5
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值