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.