首页/开发/系统分析与架构设计速查/TCC(Try-Confirm-Cancel)

TCC(Try-Confirm-Cancel)

把分布式事务拆成三阶段业务操作:Try 预留资源、Confirm 确认提交、Cancel 释放预留;由业务实现三种操作,语义明确但侵入性强。

Try检查并预留资源(冻结额度、占用库存)
Confirm确认使用预留资源,必须成功且幂等
Cancel释放预留资源,需处理空回滚与悬挂

三阶段状态迁移

三阶段状态迁移
库存:可用 → 冻结(Try)→ 扣减(Confirm)
               ↘ 释放(Cancel)→ 可用

幂等要点:
- Confirm 重复到达:直接返回成功
- Cancel 先于 Try:记录空回滚标记
- 悬挂 Try:先查空回滚标记再执行
TCC 要把“预留”状态作为一等业务状态管理,并处理 Try 超时未达但 Cancel 先到的悬挂场景。

易错点

  • Cancel 早于 Try 到达时未做空回滚保护,资源异常
  • Confirm 失败未重试,出现部分提交

数据来源与参考

  • Chris Richardson《Microservices Patterns》
  • microservices.io 模式目录
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌