程序员求职经验分享与学习资料整理平台

网站首页 > 文章精选 正文

SpringCloud专题 - 分布式事务Seata详解

balukai 2025-07-28 15:15:10 文章精选 2 ℃

下面为你详细讲解Seata的原理、架构、核心流程及常见面试要点。


一、Seata简介

Seata(Simple Extensible Autonomous Transaction Architecture)是阿里巴巴开源的分布式事务解决方案,致力于在微服务架构下提供高性能、易用的分布式事务服务,支持多种事务模型。


二、Seata的核心架构

Seata主要由三大核心组件组成:

Transaction Coordinator(TC,事务协调者)

负责维护全局事务的状态,协调各分支事务的提交或回滚。

Transaction Manager(TM,事务管理器)

负责定义全局事务的范围,发起全局事务的开始、提交和回滚。

Resource Manager(RM,资源管理器)

负责分支事务的资源管理(如数据库操作),向TC注册分支事务,接收TC的指令进行提交或回滚。

架构图:

text

Apply to DatabaseLoad...

TM <----> TC <----> RM


三、Seata支持的事务模式

AT模式(自动补偿事务,适合关系型数据库)无侵入,自动代理本地事务。一阶段业务数据和回滚日志一起提交;二阶段根据全局事务状态决定提交或回滚。

TCC模式(Try-Confirm-Cancel,适合高一致性场景)业务自定义三段操作:Try(预留资源)、Confirm(确认提交)、Cancel(取消回滚)。

SAGA模式(长事务,适合大业务流程)业务定义正向和补偿操作,适合长流程、弱一致性场景。

XA模式(两阶段提交,强一致性)基于数据库XA协议,性能较低,适合对一致性要求极高的场景。


四、AT模式原理详解(最常用)

1. 一阶段(业务执行)

TM发起全局事务,通知TC。各RM拦截业务SQL,生成undo_log(回滚日志),与业务数据一起提交到数据库。一阶段提交后,数据已对外可见。

2. 二阶段(提交或回滚)

提交:TC通知各RM清理undo_log,完成全局提交。回滚:TC通知各RM根据undo_log反向补偿,回滚业务数据。

3. 优势

无需业务代码侵入,开发体验好。性能高,适合大部分互联网场景。


五、Seata的部署与高可用

支持多TC节点集群部署,注册到Nacos等注册中心,客户端自动发现。事务日志持久化到数据库,节点故障可恢复。


六、Seata的使用流程

引入Seata依赖,配置数据源代理。启动Seata Server(TC)。在业务代码中使用@GlobalTransactional注解开启全局事务。各微服务自动接入分布式事务。


七、常见面试延伸

Seata的AT模式与TCC模式的区别?undo_log表的作用和结构?Seata如何保证高可用和数据一致性?Seata与本地事务、XA事务的对比?Seata事务回滚失败如何排查?

----------------------------------------------------------------------------------------------------------------

如需源码分析、实战案例或详细讲解教程,欢迎留言说明!

最近发表
标签列表