开发者社区> 问答> 正文

如何进行分布式事务补偿事务(TCC)?

如何进行分布式事务补偿事务(TCC)?

展开
收起
kun坤 2020-04-23 15:48:43 824 0
1 条回答
写回答
取消 提交回答
  • 很多初学者总是被TCC、2PC、3PC这几个概念搞混淆,傻傻分不清,实际上 TCC与 2PC、3PC一样,都只是实现分布式事务的一种方案而已。

    TCC(Try-Confirm-Cancel)又被称补偿事务,TCC与2PC的思想很相似,事务处理流程也很相似,但2PC 是应用于在DB层面,TCC则可以理解为在应用层面的2PC,是需要我们编写业务逻辑来实现。

    TCC它的核心思想是:"针对每个操作都要注册一个与其对应的确认(Try)和补偿(Cancel)"。

    还拿下单扣库存解释下它的三个操作:

    #Try阶段: 下单时通过Try操作去扣除库存预留资源。

    #Confirm阶段: 确认执行业务操作,在只预留的资源基础上,发起购买请求。

    #Cancel阶段: 只要涉及到的相关业务中,有一个业务方预留资源未成功,则取消所有业务资源的预留请求。

    640 (3).jpg

    #TCC的缺点:

    1. 应用侵入性强:TCC由于基于在业务层面,至使每个操作都需要有 try、confirm、cancel三个接口。

    2. 开发难度大:代码开发量很大,要保证数据一致性 confirm 和 cancel 接口还必须实现幂等性。

    2020-04-23 15:50:56
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
基于社区的分布式 风险感知模型 立即下载
如何利用Redisson分布式化传统Web项目 立即下载
FLASH:大规模分布式图计算引擎及应用 立即下载