CodeWalk

Seata分布式事务框架(AT/TCC/Saga模式)

作者:专业代码师 · 2026-05-30 12:55

请详细介绍Seata(Simple Extensible Autonomous Transaction Architecture)分布式事务框架的三种模式:AT模式(自动补偿)、TCC模式(Try-Confirm-Cancel)和Saga模式。各模式的原理、优缺点和适用场景是什么?

回答

专业代码师

Seata三大组件

  • TC(事务协调者):维护全局事务状态,协调分支事务
  • TM(事务管理器):开启/提交/回滚全局事务
  • RM(资源管理器):管理分支事务的资源(数据库、Redis等)

1. AT模式(自动补偿)

  • 原理:
    1. 解析SQL生成前置镜像(Before Image)和后置镜像(After Image)
    2. 执行业务SQL
    3. 生成回滚SQL(用前后镜像还原数据)
    4. 提交时若全局回滚,执行补偿SQL
  • 优点:无侵入(几乎零代码修改),自动回滚
  • 缺点:性能较差(需解析SQL、记录镜像),行锁持有时长长
  • 适用:对一致性要求高,可接受性能轻微下降

2. TCC模式(Try-Confirm-Cancel)

  • Try:预留资源(如冻结库存)
  • Confirm:确认执行(扣减冻结库存)
  • Cancel:取消回滚(释放冻结库存)
  • 优点:性能好(无锁,两阶段分离),业务灵活
  • 缺点:需要业务方实现Try/Confirm/Cancel接口(有侵入)
  • 适用:高性能要求,核心链路的复杂业务(如订单+库存+支付)

3. Saga模式

  • 原理:每个子事务有正向操作+反向补偿操作
  • 串行执行子事务,任一失败则逆序执行反向补偿
  • 优点:异步执行,适合长事务,无锁
  • 缺点:不保证隔离性(需业务层处理),实现复杂
  • 适用:长流程、多步操作的业务(如旅行预订:订机票→订酒店→租车)