资讯动态

面试官:说说Seata AT模式的工作原理,它是如何解决分布式事务问题的?

发布时间:2026/9/26 6:18:12 来源:尧图企业网站定制
在微服务架构中分布式事务是个绕不开的难题。当业务逻辑跨越多个数据库或者服务时数据的一致性如何保证Seata的AT模式提供了一种几乎“零侵入”的解决方案。今天我们就来聊聊它的核心原理和执行流程。一、Seata的AT模式核心原理Seata AT模式是一种基于两阶段提交2PC的思想通过数据源代理自动生成前后镜像beforeImage和afterImage和undo_log实现业务无侵入的最终一致性分布式事务。1.Seata的三大核心组件TCTransocation Coordinator事务协调器就是我们独立部署的seata server服务负责维护全局事务和分支事务的状态驱动全局事务的提交或者回滚。TMTransocation Manager事务管理器定义全局事务的边界负责开启、提交或者回滚全局事务并向TC申请全局事务的唯一ID即XID。RMResource Manager资源管理器集成在业务服务中负责管理分支事务的资源执行本地SQL、记录undo_log、注册分支事务并根据TC的命令执行二阶段的提交或者回滚。2.执行流程阶段一执行本地事务并记录快照TM向TC申请全局事务拿到全局唯一XID并沿调用链传递。RM通过DataSourceProxy拦截业务SQL并解析SQL类型和条件。执行前查询前镜像beforeImage即数据的原始状态。执行业务SQL再查询后镜像afterImage。将前后镜像和SQL信息写入undo_log表与业务操作在同一本地事务中提交。提交前向TC申请注册分支事务并申请全局锁以此保活数据行不被其他的全局事务修改。本地事务提交后立即释放数据库锁但全局锁仍由TC持有。阶段二全局提交或回滚全部成功TC通知各个RM异步删除undo_log快速完成无需额外数据操作。任一失败如果分支事务有任何一个提交失败TC通知各个RM回滚。RM根据XID和branchId去查询undo_log表中的数据校验当前数据是否和后镜像一致如果一致就根据前镜像反向生成SQL恢复数据不一致则抛出异常由人工处理。二、面试回答范文面试官说说Seata AT模式的工作原理它是如何解决分布式事务问题的我“Seata AT模式一种基于两阶段提交2PC协议的无侵入式的分布式事务解决方案它通过数据源代理拦截业务SQL自动生成回滚日志undo_log从而实现全局事务的一致性。具体来说Seata的三个核心组件TC(事务协调者、TM事务管理器以及RM资源管理器)。TM负责开启全局事务并向TC申请全局唯一的XIDXID会通过RPC Header在微服务的调用链中自动透传。在执行流程上分为两个阶段。阶段一RM拦截业务SQL解析后查询并保存前镜像beforeImage执行业务SQL后解析后查询并保存后镜像afterImage然后将业务数据和undo_log在同一个本地事务中提交释放本地锁并向TC注册分支事务。阶段二如果所有分支事务都成功TC通知各个RM异步删除undo_log快速完成如果任何一个分支事务失败TC通知各个RM根据undo_log中保存的前镜像生成反向补偿SQL校验数据一致性后执行回滚恢复数据到原始状态。为了保证数据一致性AT模式引入了全局锁机制。一阶段本地事务提交前必须获取全局锁防止并发全局事务脏写。默认的全局事务隔离级别是读未提交如果需要全局读已提交可以通过FOR UPDATE语句触发全局锁检查。使用上需要在每个业务库中创建undo_log表然后在业务入口方法上添加GlobalTransocational注解就可以解决分布式事务问题对业务代码的侵入性极低。”由于篇幅有限我将在下一篇文章中详细讲述如何使用Seata的AT模式进行分布式事务实战以及隐藏的坑。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑