Post

TCC分布式事务初见

什么是TCC

TCC 是 Try 、Confirm 、Cancel 三个词语的缩写,最早是由 Pat Helland 于 2007 年发表的一篇名为《 Life beyond Distributed Transactions:an Apostate’s Opinion 》的论文提出。

TCC组成

  • Try阶段:尝试执行,完成所有业务检查(一致性), 预留必须业务资源(准隔离性)

  • Confirm 阶段:如果所有分支的 Try 都成功了,则走到 Confirm 阶段。Confirm 真正执行业务,不作任何业务检查,只使用 Try 阶段预留的业务资源

  • Cancel 阶段:如果所有分支的 Try 有一个失败了,则走到 Cancel 阶段。Cancel 释放 Try 阶段预留的业务资源。

TCC中的三个角色

  • AP/应用程序:发起全局事务,定义全局事务包含哪些事务分支,分布式任务的发起者

  • RM/资源管理器:负责分支事务各项资源的管理,看做一个分布式任务的子任务

  • TM/事务管理器:负责协调全局事务的正确执行,包括 Confirm,Cancel 的执行,并处理网络异常,负责整个事务的完整性校验

TCC处理网络异常

CC 在整个全局事务的过程中,可能发生各类网络异常情况,典型的是空回滚、幂等、悬挂。参考文章《还被分布式事务的网络异常困扰吗?一个函数调用帮你搞定它》

小结

TCC适合于分布式事务触发里,多个子任务是完全独立的情况,单个任务的进度可以cancel掉整个任务,而其中的机制仅仅是同步到了DTM中进行全局的事务管理

This post is licensed under CC BY 4.0 by the author.