Seata分布式事务框架(AT/TCC/Saga模式)
请详细介绍Seata(Simple Extensible Autonomous Transaction Architecture)分布式事务框架的三种模式:AT模式(自动补偿)、TCC模式(Try-Confirm-Cancel)和Saga模式。各模式的原理、优缺点和适用场景是什么?
回答
专业代码师
Seata三大组件:
- TC(事务协调者):维护全局事务状态,协调分支事务
- TM(事务管理器):开启/提交/回滚全局事务
- RM(资源管理器):管理分支事务的资源(数据库、Redis等)
1. AT模式(自动补偿):
- 原理:
- 解析SQL生成前置镜像(Before Image)和后置镜像(After Image)
- 执行业务SQL
- 生成回滚SQL(用前后镜像还原数据)
- 提交时若全局回滚,执行补偿SQL
- 优点:无侵入(几乎零代码修改),自动回滚
- 缺点:性能较差(需解析SQL、记录镜像),行锁持有时长长
- 适用:对一致性要求高,可接受性能轻微下降
2. TCC模式(Try-Confirm-Cancel):
- Try:预留资源(如冻结库存)
- Confirm:确认执行(扣减冻结库存)
- Cancel:取消回滚(释放冻结库存)
- 优点:性能好(无锁,两阶段分离),业务灵活
- 缺点:需要业务方实现Try/Confirm/Cancel接口(有侵入)
- 适用:高性能要求,核心链路的复杂业务(如订单+库存+支付)
3. Saga模式:
- 原理:每个子事务有正向操作+反向补偿操作
- 串行执行子事务,任一失败则逆序执行反向补偿
- 优点:异步执行,适合长事务,无锁
- 缺点:不保证隔离性(需业务层处理),实现复杂
- 适用:长流程、多步操作的业务(如旅行预订:订机票→订酒店→租车)