Seata AT模式适用场景及相关原理

简介: Seata AT模式适用场景及相关原理

适用场景

Seata AT模式是无侵入的分布式事务解决方案,适用于不希望对业务进行改造的场景,几乎0学习成本。在业务开发过程中,开发人员只需要关注自己需要处理的业务逻辑即可,编码方式几乎和没有分布式事务一样,Seata AT模式会自动完成二阶段的提交和回滚操作。


image.png

从上图可以看出,整个业务功能开发中,只有业务SQL这块是需要开发人员关心的,其他阶段全部交由Seata框架来托管。

原理

  • 一阶段
    在一阶段,Seata会针对DataSource进行代理,从而拿到用户需要执行的业务SQL,通过对业务SQL的语义解析,在业务数据被更改前,记录为BeforeImage,然后再执行业务SQL,在业务数据更改后的,将其记录为AfterImage,并生成行锁(通过RM分支事务注册的方式),最后提交本地数据库事务。上述操作必须在一个数据库事务内完成,保证一阶段的原子性。


image.png

  • 二阶段提交
    如果所有的分支事务一阶段全部提交成功,那么二阶段只需要删除一阶段记录的BeforeImageAfterImage和行锁即可。

image.png

二阶段回滚

如果一阶段一旦有任何的分支事务出现异常或者产生超时,都会触发Seata发起全局事务的回滚指令。Seata利用一阶段记录的BeforeImage生成反向SQL来还原业务数据。默认情况下,在还原前需要校验当前业务数据是否与AfterImage记录的数据一致来判断是否被脏写了。如果出现数据被脏写的情况,就需要人工介入处理。

image.png

小结

在Seata AT模式当中,一阶段以及二阶段的提交和回滚均由框架自动完成,开发人员只需要关注业务SQL即可,所以说AT模式是一种无侵入的分布式事务解决方案。


相关文章
|
4天前
|
自然语言处理 监控 Dubbo
Seata常见问题之使用tcc模式配置yml如何解决
Seata 是一个开源的分布式事务解决方案,旨在提供高效且简单的事务协调机制,以解决微服务架构下跨服务调用(分布式场景)的一致性问题。以下是Seata常见问题的一个合集
83 4
|
4天前
|
数据库
|
4天前
|
SQL API 数据库
Seata AT模式问题之抛出异常触发回滚如何解决
Seata是一款开源的分布式事务解决方案,旨在提供高效且无缝的分布式事务服务;在集成和使用Seata过程中,开发者可能会遇到不同的异常问题,本合集针对Seata常见异常进行系统整理,为开发者提供详细的问题分析和解决方案,助力高效解决分布式事务中的难题
325 3
|
4天前
|
Java 数据库连接 API
分布式事物【XA强一致性分布式事务实战、Seata提供XA模式实现分布式事务】(五)-全面详解(学习总结---从入门到深化)
分布式事物【XA强一致性分布式事务实战、Seata提供XA模式实现分布式事务】(五)-全面详解(学习总结---从入门到深化)
65 0
|
4天前
|
监控 API 数据库
Seata常见问题之Seata AT的设计不支持使用临时表如何解决
Seata 是一个开源的分布式事务解决方案,旨在提供高效且简单的事务协调机制,以解决微服务架构下跨服务调用(分布式场景)的一致性问题。以下是Seata常见问题的一个合集
|
4天前
|
NoSQL Java 数据库
Seata常见问题之xa模式下插入一条数据再更新这条数据会报错如何解决
Seata 是一个开源的分布式事务解决方案,旨在提供高效且简单的事务协调机制,以解决微服务架构下跨服务调用(分布式场景)的一致性问题。以下是Seata常见问题的一个合集
111 2
|
4天前
|
Java 关系型数据库 微服务
Seata常见问题之项目一直启动不成功如何解决
Seata 是一个开源的分布式事务解决方案,旨在提供高效且简单的事务协调机制,以解决微服务架构下跨服务调用(分布式场景)的一致性问题。以下是Seata常见问题的一个合集
93 0
|
4天前
|
存储 Java Nacos
Seata常见问题之xa模式出现错误xid is not valid如何解决
Seata 是一个开源的分布式事务解决方案,旨在提供高效且简单的事务协调机制,以解决微服务架构下跨服务调用(分布式场景)的一致性问题。以下是Seata常见问题的一个合集
77 4
|
4天前
|
数据库 开发者
Seata的 TCC 模式
Seata的 TCC 模式
|
4天前
|
存储 Java Apache
Seata 的 AT 模式
Seata 的 AT 模式

热门文章

最新文章