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请求。
• 幂等控制:确保Try、Confirm、Cancel多次执行结果一致(如通过唯一事务ID)。
3. 示例与场景 • 扣款场景:
• Try:检查账户余额并冻结30元。
• Confirm:实际扣除冻结的30元。
• Cancel:解冻30元恢复账户状态。
• 并发示例:两个事务并行扣款,各自冻结资金互不影响,提升分布式事务并发性。
通过以上设计,Seata的TCC模式为复杂分布式系统提供了灵活且可靠的事务解决方案,适用于需要精细化控制业务一致性的场景。