分布式事务探讨系列(四):TCC解决方案

TCC(Try-Confirm-Cancel)是一种分布式事务解决方案,通过业务操作的Try、Confirm、Cancel三阶段实现最终一致性。在Try阶段预留资源,Confirm阶段执行业务,Cancel阶段释放资源。TCC模式要求Confirm和Cancel操作幂等,以处理网络异常等情况。在实现TCC服务时需注意空回滚、幂等性、并发访问控制等问题。常见开源TCC框架包括ByteTCC、himly、tcc-transaction。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

TCC模式:

TCC是一种比较成熟的分布式事务解决方案,一个完整的TCC业务由一个主业务服务和若干个从业务服务组成,主业务服务发起并完成整个业务活动,TCC模式要求从服务提供三个接口:Try、Confirm、Cancel

Try:完成所有业务检查,预留必须业务资源
Confirm:真正执行业务,不作任何业务检查,只使用Try阶段预留的业务资源 Confirm操作满足幂等性
Cancel: 释放Try阶段预留的业务资源 Cancel操作满足幂等性整个TCC业务分成两个阶段完成。
 

 

业务操作步骤

第一阶段:主业务服务分别调用所有从业务的try操作,并在活动管理器中登记所有从业务服务。当所有从业务服务的try操作都调用成功或者某个从业务服务的try操作失败,进入第二阶段。
第二阶段:活动管理器根据第一阶段的执行结果来执行confirm或cancel操作。如果第一阶段所有try操作都成功,则活动管理器调用所有从业务活动的confirm操作。否则调用所有从业务服务的cancel操

需要注意的是第二阶段confirm或cancel操作本身也是满足最终一致性的过程,在调用confirm或cancel的时候也可能因为某种原因(比如网络)导致调用失败,所以需要活动管理支持重试的能力,同时这也就要求confirm和cancel操作具有幂等性。

 

例子

举个例子,假入 Bob 要向 Smith 转账,思路大概是:
我们有一个本地方法,里面依次调用
1、首先在 Try 阶段,要先调用远程接口把 Smith 和 Bob 的钱给冻结起来。
2、在 Confirm 阶段,执行远程调用的转账的操作,转账成功进行解冻。
3、如果第2步执行成功,那么转账成功,如果第二步执

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值