← 每日面试题 学习看板

Seata的4种事务模式,各自适合的场景是什么?

面试题/02架构设计题/02分布式/02分布式事务/Seata的4种事务模式,各自适合的场景是什么?.md

面试记录 2026-10-19

题目:Seata 的 4 种事务模式,各自适合的场景是什么?

难度:low

标签:arch/distributed/transaction, distributed/xa, distributed/seata, difficulty/low

评分:⭐⭐⭐☆☆(3/5)

我的回答

AT 模式是最常用的模式,依赖数据库的事务机制,无需业务侧做什么改动,来实现分布式事务的操作

TCC 需要代码入侵自己进行补偿提交相关的业务回滚

XA 模式是基于数据库自身的xa来实现的

saga 状态机事务补偿

点评

优点:

不足:

补充:

完整讲解

第一部分:知识重点剖析

核心考点定位:不只考"有哪 4 种",而是考"每种模式的机制 + 适配场景 + 选型依据"。

知识点拆解:

  1. AT(Auto Transaction):代理 DataSource,一阶段写 before/after image + undo_log 并申请全局锁;二阶段成功异步删 undo_log,失败反向生成 SQL 回滚。低侵入,适合订单/库存等常规链路。
  2. TCC:业务实现 Try(冻结)/Confirm(提交)/Cancel(补偿)。侵入高、锁粒度细,适合核心账务、跨库、需要资源预留的场景。
  3. Saga:把长事务拆成多个本地事务,每步配补偿;靠状态机编排。适合长链路、可接受最终一致的业务。
  4. XA:基于数据库 XA/JTA 的两阶段提交,强一致但全程持锁、阻塞,适合单库多表或传统中间件场景。
  5. 选型矩阵:一致性强度 / 侵入性 / 性能 / 是否阻塞 / 事务时长。

第二部分:考察方向与延伸递进

考察方向:

延伸递进面试题:

  1. "AT 和 TCC 都偏强一致,怎么选?"
  1. "Saga 的补偿一定成功吗?"
  1. "XA 为什么生产上越来越少用?"

第三部分:面试者参考回答

【一句话结论】

面试官您好,Seata 有 AT、TCC、Saga、XA 四种模式,本质是在"侵入性、一致性、性能"之间做不同取舍。

【三点展开】

第一,AT 是默认首选,代理数据源 + undo_log 自动回滚,业务几乎不改,适合订单、库存这类常规微服务,代价是全局锁。

第二,TCC 要业务自己写 Try/Confirm/Cancel,侵入最大但资源控制最细,适合核心账务和跨库场景;Saga 则是长链路状态机编排,每步配补偿,适合多步、可接受最终一致的流程。

第三,XA 是数据库原生两阶段,强一致但全程持锁、阻塞、性能差,只在单库多表或传统 JTA 场景考虑。

【一句边界】

当然,模式选择看业务对一致性和侵入性的容忍度,不是越强越好——大多数互联网链路用 AT 或最终一致方案就够了。