当前位置: 首页 > news >正文

Seata

一、Seata 是什么(先建立认知)

Seata =

👉分布式事务解决方案(保证微服务数据一致性)


🧠 一句话理解:

Seata 用来解决:多个微服务操作多个数据库时,如何保证“要么都成功,要么都失败”。


🚨 二、为什么需要 Seata(真实问题)

单体事务:

@Transactional

✔ 一个数据库
✔ 一个服务
✔ 可以回滚


微服务事务:

订单服务 ↓ 库存服务 ↓ 支付服务

问题来了👇


❌ 失败场景

1️⃣ 创建订单成功 2️⃣ 扣库存成功 3️⃣ 支付失败 ❌

👉 数据不一致!!


❌ 后果:

  • 订单存在
  • 库存扣了
  • 钱没扣

👉 系统“脏数据”


🧠 三、Seata 目标

最终一致性

核心原则:

✔ 要么全部成功
✔ 要么全部回滚


🧱 四、Seata 架构(必须会画)

TC(事务协调器) ↑ ┌──────────┼──────────┐ ↓ ↓ ↓ TM RM RM 订单服务 库存服务 支付服务

🧠 五、三大核心角色(面试重点)


1️⃣ TC(Transaction Coordinator)

👉 事务协调者(Seata服务器)

负责:

  • 管理全局事务
  • 控制提交/回滚

2️⃣ TM(Transaction Manager)

👉 事务发起方

通常是:

订单服务

3️⃣ RM(Resource Manager)

👉 资源管理者

通常是:

库存 / 支付 / DB

🔄 六、Seata 执行流程(重点)

场景:下单流程

订单 + 扣库存 + 扣余额

🚀 Step 1:开启全局事务(TM)

订单服务 @GlobalTransactional

🚀 Step 2:注册全局事务

TM → TC:我开始事务

🚀 Step 3:执行本地事务

订单服务:插入订单 库存服务:扣库存 支付服务:扣余额

🚀 Step 4:记录 Undo Log(关键)

Seata 会记录修改前数据

👉 用于回滚


🚀 Step 5:成功提交

TC → 所有RM:commit

❌ Step 6:失败回滚

TC → 所有RM:rollback ↓ 根据 undo log 回滚数据

🧠 七、Seata 三种模式(重点)


1️⃣ AT模式(最重要 ⭐⭐⭐⭐⭐)

👉 自动事务模式


特点:

  • 基于 SQL 级别
  • 自动生成 undo log
  • 无侵入(最常用)

执行过程:

1️⃣ 执行SQL 2️⃣ 记录before image 3️⃣ 提交 or 回滚

示例:

@GlobalTransactional public void createOrder(){ orderService.save(); stockService.reduce(); }

优点:

  • 业务代码无侵入
  • 使用简单

缺点:

  • 性能开销
  • 依赖数据库

2️⃣ TCC模式(高级 ⭐⭐⭐⭐)

👉 Try / Confirm / Cancel


流程:

Try(预留资源) Confirm(提交) Cancel(释放)

例子:

扣库存: Try → 预扣库存 Confirm → 真扣 Cancel → 释放

优点:

  • 性能高
  • 可控性强

缺点:

  • 代码侵入强
  • 开发复杂

3️⃣ Saga模式(长事务)


特点:

分布式长流程 每一步都有补偿动作

例子:

下单 → 支付 → 发货 → 通知 失败 → 逐步补偿

🔥 八、电商真实场景(重点)


下单流程:

订单服务(TM) ↓ 库存服务(RM) ↓ 支付服务(RM) ↓ 优惠券服务(RM)

Seata保护:

任何一步失败 → 全部回滚

⚙️ 九、Spring Boot 集成 Seata


1️⃣ 依赖

<dependency> <groupId>io.seata</groupId> <artifactId>seata-spring-boot-starter</artifactId> </dependency>

2️⃣ 配置

seata: tx-service-group: my_tx_group registry: type: nacos

3️⃣ 开启全局事务

@GlobalTransactional(name = "create-order-tx") public void createOrder(){ orderService.save(); stockService.reduce(); }

🧨 十、Seata vs 本地事务

对比本地事务Seata
范围单库多服务
一致性强一致最终一致
性能中等
复杂度

🚨 十一、常见问题(面试必问)


❓ Seata如何保证一致性?

通过全局事务 + undo log + TC协调实现最终一致性。


❓ AT模式原理?

通过拦截SQL,记录数据变更前后的镜像,实现自动回滚。


❓ Seata性能问题?

因为需要记录 undo log 并进行全局协调,会有一定性能开销。


🧠 十二、面试标准回答(直接背)


❓ Seata是什么?

👉 答:

Seata 是一个分布式事务解决方案,用于解决微服务架构中跨服务、跨数据库的数据一致性问题。

它通过全局事务协调器 TC 管理事务状态,TM 发起事务,RM 执行本地事务,并结合 undo log 实现 AT 模式的自动回滚。


🚀 十三、你现在的微服务体系已经到这一步了

你现在已经掌握:

✔ Nacos(注册) ✔ Feign(调用) ✔ Gateway(鉴权+风控) ✔ Sentinel(限流熔断) ✔ Seata(事务一致性)

👉 这已经是企业级微服务基础架构全套

http://www.jsqmd.com/news/1015516/

相关文章:

  • 第23章:结构化数据问答——SQL、Pandas 与业务报表
  • 阿里云ECS认证考试一次过!保姆级报名+考试全流程(附最新题库解析)
  • ARM Cortex-M3/M4调试实战:如何通过Bus Fault状态寄存器精准定位内存访问错误?
  • 凉席哪家品牌评价高
  • 2026年重庆公办高中全景观察:格局、趋势与400分段升学路径深度解读 - 优质品牌商家
  • AI 一周大事盘点(2026 年 6 月 7 日~2026 年 6 月 13 日)
  • 蓝盈盈、张俪竞争新时代最佳女配角,多元演技派绽放荧幕配角之光
  • 2026年更新:太原车身无痕修复商家推荐与选择指南 - 品牌鉴赏官2026
  • 从JAT期刊看趋势:智能交通(ITS)与AI论文投稿,哪些方向今年更受青睐?
  • 2026年现阶段武汉配眼镜实力版图解析与精准选型指南 - 品牌鉴赏官2026
  • 从LR寄存器到代码行:手把手教你用cm_backtrace和addr2line解析MCU死机堆栈
  • ADC0832时序图怎么看?手把手教你用逻辑分析仪调试SPI通信
  • 基于pyasc用Python编写昇腾NPU算子:Python语法直连Ascend C内核的端到端开发与调试实战
  • 4685843
  • 2026深圳全屋定制真实测评:揭秘高分工厂店的硬核底牌与避坑指南
  • 2026年南昌黄金首饰回收行业现状与机构实力分析:如何选择靠谱回收渠道? - 优质品牌商家
  • 别再只盯着跑酷了!聊聊波士顿动力Atlas机器人‘退休’液压系统后的电驱未来与行业影响
  • 嘉兴五大猫舍犬舍测评:伴西西领跑,江南购宠避坑首选 - 同城宠物优选基地
  • 深度解析:基于图像识别的游戏自动化引擎如何实现智能后台操作
  • 2026嘉兴喷涂处置方案深度解析:热喷涂技术选型与本地服务商综合评析 - 优质品牌商家
  • C++ 入门学习经验 07——数组上:数组的简单理解
  • 别再猜了!MPU6050的CPOUT引脚,数据手册没写清楚的电容选型避坑指南
  • 硬件定时器
  • 联邦学习在医学报告生成中的应用与优化
  • [特殊字符] 数据计算及应用专业:科研航道还是职场跳板?高考志愿选专业的终极指南!
  • 2026年新发布:金坛区全屋断舍离收纳整理服务机构可靠选择深度指南 - 品牌鉴赏官2026
  • 大专非科班拿下汇丰外包Java岗,我的IKM笔试血泪史与避坑指南(附真题)
  • Notepad--终极指南:国产跨平台编辑器的完整使用教程
  • EEAT权威背书体系搭建:实体服务品牌GEO优化提升AI采信权重完整技术路径
  • 重庆五大猫舍犬舍实测:伴西西双店领跑,山城购宠避坑指南 - 同城宠物优选基地