跳转至

TCC 理论及设计实现指南介绍

1. TCC模式简介 • 定义:TCC(Try-Confirm-Cancel)是两阶段提交协议(2PC)的一种服务化实现,适用于跨数据库/服务的分布式事务场景。

• 三阶段操作:

• Try:资源检查与预留(如冻结资金)。

• Confirm:执行业务提交(如实际扣款)。

• Cancel:释放预留资源(如解冻资金)。

• 执行流程:事务管理器(TM)先调用所有TCC服务的Try,若全部成功则调用Confirm提交,否则调用Cancel回滚。


2. TCC设计关键点 • 业务分两阶段

将原单步操作拆分为资源预留(Try)和实际执行(Confirm/Cancel),例如扣款场景中先冻结资金再扣款。

• 并发控制

通过细粒度锁(如冻结部分金额)支持高并发,避免不同事务相互干扰。

• 异常处理机制

• 允许空回滚:处理未收到Try但收到Cancel的场景(如网络丢包),需返回成功。

• 防悬挂控制:避免因网络延迟导致Cancel先于Try执行,需拒绝迟到的Try请求。

• 幂等控制:确保TryConfirmCancel多次执行结果一致(如通过唯一事务ID)。


3. 示例与场景 • 扣款场景:

• Try:检查账户余额并冻结30元。

• Confirm:实际扣除冻结的30元。

• Cancel:解冻30元恢复账户状态。

• 并发示例:两个事务并行扣款,各自冻结资金互不影响,提升分布式事务并发性。


通过以上设计,Seata的TCC模式为复杂分布式系统提供了灵活且可靠的事务解决方案,适用于需要精细化控制业务一致性的场景。