news 2026/5/16 15:05:05

spring cloud seata 知识点

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
spring cloud seata 知识点

一、Seata 是什么?

Seata 是阿里巴巴开源的分布式事务解决方案,致力于提供高性能和简单易用的分布式事务服务。

✅ 解决跨服务、跨数据库的事务一致性问题
✅ Spring Cloud Alibaba 官方推荐


二、分布式事务背景(为什么要用 Seata)

1️⃣ 传统事务的局限

  • 单体应用:@Transactional ✅
  • 微服务:多个服务、多个数据库 ❌

2️⃣ 典型问题

下单服务 → 扣库存 → 创建订单 → 扣账户余额

❌ 其中一个失败,其他已提交 →数据不一致


三、Seata 核心概念(必背)

角色说明
TC (Transaction Coordinator)事务协调者(Seata Server)
TM (Transaction Manager)事务管理器(@GlobalTransactional)
RM (Resource Manager)资源管理器(数据库)

四、Seata 执行流程(高频)

TM 开启全局事务 ↓ RM 注册分支事务 ↓ 执行业务 SQL ↓ RM 报告状态 ↓ TC 决定提交或回滚 ↓ TM 结束事务

两阶段提交思想


五、Seata 的四种事务模式(重点)

1️⃣ AT 模式(最常用 ⭐⭐⭐⭐⭐)

特点

  • 无侵入
  • 自动补偿
  • 基于 UNDO_LOG

原理

  1. 执行前:记录前镜像
  2. 执行后:记录后镜像
  3. 回滚:用前镜像恢复数据

适合大多数业务


2️⃣ TCC 模式(强一致)

阶段方法
Try资源预留
Confirm确认
Cancel取消

✅ 适合:

  • 资金
  • 库存
  • 强一致场景

❌ 代码侵入高


3️⃣ SAGA 模式(长事务)

✅ 正向执行
✅ 失败补偿

✅ 适合:

  • 跨系统
  • 长流程
  • 不可回滚操作

4️⃣ XA 模式(强一致)

✅ 数据库原生支持
❌ 锁时间长


六、AT 模式详解(面试必问)

1️⃣ UNDO_LOG 表(关键)

CREATETABLEundo_log(idBIGINTAUTO_INCREMENT,branch_idBIGINTNOTNULL,xidVARCHAR(100)NOTNULL,contextVARCHAR(128),rollback_infoLONGBLOB,log_statusINT,PRIMARYKEY(id));

回滚的依据


2️⃣ 全局锁(Global Lock)

  • 防止脏写
  • 在提交前加锁

七、Seata 与 CAP 理论

模式一致性可用性
AT最终一致
TCC强一致
SAGA最终一致

八、Seata 配置要点(实战)

1️⃣ 引入依赖

<dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-seata</artifactId></dependency>

2️⃣ 开启全局事务

@GlobalTransactionalpublicvoidcreateOrder(){orderService.create();accountService.debit();storageService.deduct();}

3️⃣ 数据源代理(非常关键 ⚠️)

@BeanpublicDataSourcedataSource(DataSourceoriginal){returnnewDataSourceProxy(original);}

❌ 不加代理 → Seata 不生效


九、Seata 常见问题(面试坑)

❌ 全局锁冲突
❌ 回滚失败
❌ UNDO_LOG 表缺失
❌ 数据源未代理
❌ 事务粒度过大


十、Seata vs 其他方案

方案特点
Seata AT简单、常用
TCC强一致
MQ 最终一致高吞吐
2PC传统

十一、面试标准答案(背这段 ✅)

Seata 是阿里开源的分布式事务框架,通过 TC、TM、RM 三组件协调全局事务。
最常用的是 AT 模式,基于 UNDO_LOG 实现自动回滚,对业务侵入小。
对于强一致场景可使用 TCC 模式,对于长事务可使用 SAGA 模式。
在使用 Seata 时,必须对数据源进行代理,并配置全局事务注解。


十二、一句话总结(记住这句)

Seata = 分布式事务的“Spring @Transactional”


版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/16 15:04:20

LeaderKey.app开发者指南:深入源码解析架构设计

LeaderKey.app开发者指南&#xff1a;深入源码解析架构设计 【免费下载链接】LeaderKey The *faster than your launcher* launcher 项目地址: https://gitcode.com/gh_mirrors/le/LeaderKey LeaderKey.app是一款轻量级启动器应用&#xff0c;以"比你的启动器更快&…

作者头像 李华
网站建设 2026/5/16 15:04:19

EB Garamond 12:开源学术排版的革命性字体解决方案

EB Garamond 12&#xff1a;开源学术排版的革命性字体解决方案 【免费下载链接】EBGaramond12 项目地址: https://gitcode.com/gh_mirrors/eb/EBGaramond12 你是否在为学术论文、专业出版物或品牌设计寻找一款兼具古典优雅与现代实用性的字体&#xff1f;在数字时代&am…

作者头像 李华
网站建设 2026/5/16 14:58:10

如何为yt-dlp-gui扩展新视频平台支持:完整开发者指南

如何为yt-dlp-gui扩展新视频平台支持&#xff1a;完整开发者指南 【免费下载链接】yt-dlp-gui Windows GUI for yt-dlp 项目地址: https://gitcode.com/gh_mirrors/yt/yt-dlp-gui yt-dlp-gui是一款基于yt-dlp引擎构建的Windows图形界面视频下载工具&#xff0c;为命令行…

作者头像 李华
网站建设 2026/5/16 14:56:38

PLC编程进阶:IEC定时器与计数器的局部变量声明与模块化设计

1. 项目概述&#xff1a;从全局变量到局部变量的思维转变在工业自动化编程&#xff0c;尤其是基于IEC 61131-3标准的PLC编程中&#xff0c;定时器&#xff08;Timer&#xff09;和计数器&#xff08;Counter&#xff09;是我们最常打交道的功能块。很多工程师&#xff0c;尤其是…

作者头像 李华
网站建设 2026/5/16 14:56:37

Cube Studio实战案例:从推荐系统到计算机视觉的完整解决方案

Cube Studio实战案例&#xff1a;从推荐系统到计算机视觉的完整解决方案 【免费下载链接】cube-studio cube studio开源云原生一站式机器学习/深度学习/大模型AI平台/MaaS/mlops/人工智能平台/训推平台&#xff0c;算法全链路流程&#xff0c;多租户&#xff0c;算力租赁平台&a…

作者头像 李华