当前位置: 首页 > 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.gsyq.cn/news/1527336.html

相关文章:

  • AI 一周大事盘点(2026 年 6 月 7 日~2026 年 6 月 13 日)
  • 蓝盈盈、张俪竞争新时代最佳女配角,多元演技派绽放荧幕配角之光
  • 从LR寄存器到代码行:手把手教你用cm_backtrace和addr2line解析MCU死机堆栈
  • 2026年现阶段武汉配眼镜实力版图解析与精准选型指南 - 品牌鉴赏官2026
  • ADC0832时序图怎么看?手把手教你用逻辑分析仪调试SPI通信
  • 别再只盯着跑酷了!聊聊波士顿动力Atlas机器人‘退休’液压系统后的电驱未来与行业影响
  • 深度解析:基于图像识别的游戏自动化引擎如何实现智能后台操作
  • C++ 入门学习经验 07——数组上:数组的简单理解
  • 硬件定时器
  • [特殊字符] 数据计算及应用专业:科研航道还是职场跳板?高考志愿选专业的终极指南!
  • EEAT权威背书体系搭建:实体服务品牌GEO优化提升AI采信权重完整技术路径
  • NLP技术在漏洞预测中的应用与优化
  • 一键循环录制工具:让旧手机变身车载记录仪与家庭监控
  • 2026年GEO监测工具怎么选?数据溯源、平台覆盖和归因分析,谁更务实?
  • RKMedia人脸车牌SDK二次开发避坑指南:RV1126平台上的内存、图片尺寸与性能调优
  • 保姆级教程:用示波器和DP协议分析仪调试DisplayPort EQ训练失败问题
  • 87468
  • VCSA 7.0部署卡在80%?别慌,这3个DNS和IP配置细节帮你搞定
  • 从‘玄学’到科学:DisplayPort链路训练中Clock Recovery失败的排查思路与工具使用
  • 2026年近期专业武汉施工合同纠纷律师咨询联系指南:刘津龙律师团队解析 - 品牌鉴赏官2026
  • 增量k-NN算法与MST增强的文档聚类技术解析
  • 交互式分析看板的蓝图搭建与数据接入全流程详解
  • 2026年新消息:中山环保设备过滤棉厂商选择指南与专业推荐 - 品牌鉴赏官2026
  • 别再被Cartographer的.lua配置文件搞懵了!手把手教你从雷达/IMU启动文件到revo_lds.lua的完整配置流程
  • 告别NeRF的‘黑盒’编辑:聊聊Gaussian Splatting的显式控制与HGS如何稳住‘手抖’的AI
  • 除了Vulnhub,这5个免费靶场平台哪个更适合你?(Hack The Box, TryHackMe, Vulhub对比)
  • 三桶油校招笔试怎么过?我整理了中石油、中石化、中海油近5年真题题库(含答案解析)
  • 解决GitLab访问超时:从‘等着就好’到主动加速的5个实用技巧
  • BF7006内部Flash和EEPROM操作避坑指南:解锁、擦除、编程的完整流程与常见错误
  • 给技术人的实验室认证扫盲贴:CNAS、CMA、CAL到底有啥区别,你的报告盖哪个章才有效?