🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
>[info] TCC-基于业务接口 ![](https://img.kancloud.cn/5f/e6/5fe60a080046a30b80950fbfcd9450e6_1032x606.png) 说起分布式事务的概念,不少人都会搞混淆,似乎好像分布式事务就是TCC。实际上TCC与2PC、3PC一样,只是分布式事务的一种实现方案而已。 ***** TCC(**Try-Confirm-Cancel**)又称补偿事务。其核心思想是:"针对每个操作都要注册一个与其对应的确认和补偿(撤销操作)"。它分为三个操作: * **Try阶段:** 主要是对业务系统做检测及资源预留。 * **Confirm阶段:** 确认执行业务操作。 通过调用确认接口。 * **Cancel阶段:** 取消执行业务操作。 通过调用取消接口。 ![](https://img.kancloud.cn/b2/52/b252f2a8075342b475c6628d37a65c56_986x434.png) ***** TCC事务的处理流程与2PC两阶段提交类似,不过2PC通常都是在跨库的DB层面,而TCC本质上就是一个应用层面的2PC,需要通过业务逻辑来实现。这种分布式事务的实现方式的优势在于,可以让**应用自己定义数据库操作的粒度,使得降低锁冲突、提高吞吐量成为可能**。 ***** **不足之处:** 1. 在于对应用的侵入性非常强,业务逻辑的每个分支都需要实现try、confirm、cancel三个操作。此外,其实现难度也比较大,需要按照网络状态、系统故障等不同的失败原因实现不同的回滚策略。为了满足一致性的要求,confirm和cancel接口还必须实现幂等。 2. 开发量很大。