什么是TCC
TCC是Try、Contirm、Cancel三个词语的缩写,TCC要求每个 分支事务实现三个操作:预处理Try、确认Contirm、撤销Cancel。Try操作业务检查以及资源预留,Contirm做业务确认,Cancel实现一个与Try相反的操作即回滚。TM首先发起所有的分支事务的try操作,任何一个分支事务的try操作执行失败,TM将会发起所有分支事务的Cancel操作,若try操作全部成功,TM将会发起所有分支事务的Confirm操作,其中Confirm/Cancel操作若执行失败,TM会进行重试。
分支事务成功的场景
分支事务失败的场景
TCC分为三个阶段:
- Try 阶段是做业务检查(一致性)及资源预留(隔离),此阶段仅是一个初步操作,它和后续的Confirm一起才能真正构成一个完成的业务逻辑。
- Confirm 阶段是做确认提交,Try阶段所有分支事务执行成功后开始执行Confirm。通常情况下,采用TCC则认为Confirm阶段是不会出错的。即:只要Try成功,Confirm一定成功。若Confirm阶段真的出错了,需引入重试机制或人工处理。
- Cancel 阶段是在业务执行错误需要回滚的状态下执行分支事务的业务取消,预留资源释