什么是TCC事务
TCC是Try、Confirm、Cancel三个词语的缩写,要求每个分支事务执行三个操作:
预处理Try:做业务检查和资源预留
确认Confirm:做业务确认
撤销Cancel:实现回滚操作
TM首先会发起所有分支事务的try操作,任何一个分支事务的try操作执行失败,TM将会发起所有分支事务的Cancel操作,若try全部成功,TM将会发起所有分支事务的confirm操作,其中,若confirm、cancel执行失败,TM会进行重试。
try-confirm成功 try-cancel失败TCC分为三个阶段:
1)Try阶段是做业务检查(一致性)及资源预留(隔离)。
2)Confirm阶段是做确认提交,Try阶段所有分支事务执行成功开始执行confirm。
通常情况下使用TCC则认为在Confirm阶段不会出错,只要try成功,confirm一定成功。若confirm出错,则进行重试或人工处理。
3)Cancel阶段是在业务执行错误需要回滚的状态下,执行其他未失败的分支事务的取消,即预留资源的释放。
通常情况下,TCC的Cancel阶段也认为是一定成功的,若出错曾引入重试或人工处理。
TCC的实现方案
以下几个框架均支持TCC全局事务,目前阿里seata拥有较大的用户基数,github的star数也是遥遥领先,后面会逐步增加seata实战源码。
名称 | github |
---|---|
tcc-transaction | https://github.com/changmingxie/tcc-transaction |
LCN | https://github.com/codingapi/tx-lcn |
Alibaba Seata | https://github.com/seata/seata |
Hmily | https://github.com/yu199195/hmily |
ByteTCC | https://github.com/liuyangming/ByteTCC |
网友评论