用PHP轻松完成一个分布式事务TCC,保姆级教程

2021-11-16  王中华 

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

TCC组成
TCC分为3个阶段

Try 阶段:尝试执行,完成所有业务检查(一致性), 预留必须业务资源(准隔离性)
Confirm 阶段:如果所有分支的Try都成功了,则走到Confirm阶段。Confirm真正执行业务,不作任何业务检查,只使用 Try 阶段预留的业务资源
Cancel 阶段:如果所有分支的Try有一个失败了,则走到Cancel阶段。Cancel释放 Try 阶段预留的业务资源。
TCC分布式事务里,有3个角色,与经典的XA分布式事务一样:

AP/应用程序,发起全局事务,定义全局事务包含哪些事务分支
RM/资源管理器,负责分支事务各项资源的管理
TM/事务管理器,负责协调全局事务的正确执行,包括Confirm,Cancel的执行,并处理网络异常
如果我们要进行一个类似于银行跨行转账的业务ww2.mathworks.cn/matlabcentral/profile/authors/24712451?s_tid=gn_comm
ww2.mathworks.cn/matlabcentral/profile/authors/24712489?s_tid=gn_comm
ww2.mathworks.cn/matlabcentral/profile/authors/24712520
ww2.mathworks.cn/matlabcentral/profile/authors/24712542?s_tid=gn_comm
ww2.mathworks.cn/matlabcentral/profile/authors/24712563?s_tid=gn_comm

ww2.mathworks.cn/matlabcentral/profile/authors/24362830?s_tid=gn_comm
ww2.mathworks.cn/matlabcentral/profile/authors/24362863?s_tid=gn_comm
ww2.mathworks.cn/matlabcentral/profile/authors/24362863?s_tid=gn_comm
ww2.mathworks.cn/matlabcentral/profile/authors/24362914
ww2.mathworks.cn/matlabcentral/profile/authors/24373898
ww2.mathworks.cn/matlabcentral/profile/authors/24373950
ww2.mathworks.cn/matlabcentral/profile/authors/24374016
ww2.mathworks.cn/matlabcentral/profile/authors/24374060?s_tid=gn_comm
ww2.mathworks.cn/matlabcentral/profile/authors/24374107?s_tid=gn_comm
ww2.mathworks.cn/matlabcentral/profile/authors/24374137?s_tid=gn_comm,转出(TransOut)和转入(TransIn)分别在不同的

52°|522 人阅读|0 条评论
登录 后发表评论
访客 26
2
0
0/0
0
博客
讨论
问答
找茬
王中华 的其他博文 更多