问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

分布式事务解决方案TCC

发布网友 发布时间:2022-11-27 01:18

我来回答

1个回答

热心网友 时间:2023-10-13 06:30

TCC是Try、Confirm、Cancel三个词语的缩写,要求每个分支事务执行三个操作:
预处理Try:做业务检查和资源预留
确认Confirm:做业务确认
撤销Cancel:实现回滚操作

TM首先会发起所有分支事务的try操作,任何一个分支事务的try操作执行失败,TM将会发起所有分支事务的Cancel操作,若try全部成功,TM将会发起所有分支事务的confirm操作,其中,若confirm、cancel执行失败,TM会进行重试。

1)Try阶段是做业务检查(一致性)及资源预留(隔离)。
2)Confirm阶段是做确认提交,Try阶段所有分支事务执行成功开始执行confirm。
通常情况下使用TCC则认为在Confirm阶段不会出错,只要try成功,confirm一定成功。若confirm出错,则进行重试或人工处理。
3)Cancel阶段是在业务执行错误需要回滚的状态下,执行其他未失败的分支事务的取消,即预留资源的释放。
通常情况下,TCC的Cancel阶段也认为是一定成功的,若出错曾引入重试或人工处理。

以下几个框架均支持TCC全局事务,目前阿里seata拥有较大的用户基数,github的star数也是遥遥领先,后面会逐步增加seata实战源码。

在Try阶段,假设对服务A发送Try请求,由于网络原因导致网络超时,此时协调器收到网络超时的响应,需要在第二步进行cancel操作。可是服务A在Try阶段根本没有执行成功,这样就导致了数据不一致。

解决问题的关键是如何在Try阶段识别出服务A是否执行成功了,如果成功了就执行commit,如果失败了,就执行空回滚。可以增加一张分支事务记录表,记录分支事务和全局事务id,当请求超时后可以通过此表查看分支事务,执行Try则记录,没有则走空回滚。

主要出现在Try阶段。在confirm或cancel前先进行查询,通过增加一张事务状态表。

更加严谨需要增加分布式锁。

由于超时等原因,cancel比try先执行,就是悬挂问题。

解决方案增加分支事务记录表,先去查询,如果cancel已经执行,则不再执行try。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
windows8怎么本地连接 windows8如何设置网络 诸葛亮故里诸葛亮故里纪念馆 临沂诸葛亮文化旅游节历届介绍 第四届诸葛亮文化旅游节纪念诞辰 ...请根据该表回答下面问题: (1)表中A、B、C分 ...请你分析样品A、B、C中代表血浆、原尿和尿液的样品分别是... c糖蛋白化验 江诗丹顿金属手表(江诗丹顿的手表女款) 定位最好的手表? 表带上的圈叫什么 哈根达斯冰淇淋蛋糕可以保存多久 哈根达斯蛋糕放冷藏还是冷冻 新问世的龙芯3A5000和3C5000处于什么水平? 据说中国现在也有自己的CPU 叫 龙芯. 为什么没有人使用呢? 曙光6000超级计算机和“走鹃”巨型计算机哪个浮点运算能力高 80万落地买什么车能装最大的面子? 关于浪漫 庄园. 飞鹤星飞帆大罐小罐味道不同吗 君乐宝乐臻奶粉小罐足量吗 用易拉罐拉环可以做什么,怎么做呀? 易拉罐上的圆环是干什么的 易拉罐拉环的妙用 变废为宝你也可以 植物大战僵尸玉米投手折纸 玉米投手怎么做 电影8英里中Eminem 经常穿的那种深蓝的牛仔外套淘宝有卖吗? eminem的厚外套 the monster的mv里面eminem穿的外套是什么牌子 EMINEM在八英里和很多MV里都穿的那件衣服什么专卖店有卖啊! 金立手机锁屏后就静音了,怎样才能不让它静音? excel表格数字加字母怎么弄(excel表格数字加单位) 北京适合逛街的地方,能买到漂亮的衣服,纪念品什么的? 分布式事务(XA、2PC、3PC介绍) 分布式事务(3)--seate 一汽锡柴490发动机比480柴油机没小时耗油量大多少? 陕汽X5000重卡490和480的区别 48o发动机好还是490发动机好? 480柴油机排量是多少,490又是多少?谢谢!! 为什么潍柴的480比锡柴的490省油 发动机480,485,490,4100,4102,4110是如何辨别的 5.5元烤鲳鱼多大 急求!0x2100fa2c指令引用的0x0019bc64内存,该内存不能为read f′e=(fb-fa)/(b-a)吗? fhd-f和b 证明:若f(x)在开区间(a,b)内连续,极限x趋向于a+,极限x趋向于b-存在,则f(x)在(a 华硕b660m-a能跑满12700f吗 惠普笔记本电脑进b时欠多少钱f几 设随机变量X分布函数为F(x)=A+Be^(-λx),x>0,F(x)=0,x<=0,(1)求常数A,B(2)求P{ 澳乐乳dha官网正品查询,澳乐乳dha怎么辨别真假 励志2021年说说大全:时间是一味能治百病的良药 什么是培福?培福、供养和化缘之间有什么不同? 我的世界创世学院喜马拉雅为什么搜不到了?2022年的