分布式事务方案—— TCC事务
创作时间:
作者:
@小白创作中心
分布式事务方案—— TCC事务
引用
CSDN
1.
https://blog.csdn.net/m0_63653444/article/details/141304678
什么是 TCC 事务
TCC的作用主要是解决跨服务调用场景下的分布式事务问题,TCC是Try-Confirm-Cancel的简称:
- Try阶段:完成所有业务检查(一致性),预留业务资源(准隔离性)。所有的资源提供者预留都成功, Try 阶段才算成功。
- Confirm阶段:确认执行业务操作,不做任何业务检查,只使用 Try 阶段预留的业务资源。
- Cancel阶段:取消 Try 阶段预留的业务资源。如果某个业务方的业务资源没有预留成功,则取消所有业务资源预留请求。
TCC事务机制相对于传统XA事务机制,其特征在于它依赖资源管理器对XA的支持,而是通过对(由业务系统提供的)业务逻辑的调度来实现分布式事务。
在阶段一:
XA 事务中,各个资源管理器准备各自事务分支,也就是准备提交资源的更新操作(insert,delete 或 update等),而在 TCC 中,是主业务活动请求 (try) 各个从业务服务预留资源
在阶段二:
XA 根据第一阶段每个资源管理器是否都 prepare 成功,判断是提交还是回滚。
TCC中,如果第一阶段所有业务资源都预留成功,那么 Confirm 各个从业务服务,否则 Cancel 所有从业务服务的资源预留请求;Try 阶段成功后,如果因为网络波动导致各个参与者超时,则需要重试。这就要求 Confirm 操作必须是幂等的。Try 操作主要是为了 保证业务操作的前置条件都得到满足。然后在 Confirm 阶段,因为前置条件都满足了,不断重试直至成功就行了。
但万一 Confirm 重试还是失败了呢?这就会导致数据不一致了,因为有的从业务 Confirm 成功已经执行了资源操作。所以 TCC 模式也不能百分百保证一致性。但 TCC 事务为我们屏蔽了大多数异常导致的数据不一致,一般情况下,进行 Confirm 或 Cancel 操作时产生异常的概率极小极小,我们可以先记录错误日志,后续使用定时任务修复数据或直接人工修复数据所以对于一些强一致性系统,我们还是会使用TCC事务来保证多个服务之间的数据一致性。
TCC事务优缺点
优点:
- 在应用层实现具体逻辑,锁定资源的粒度变小,不会锁定所有资源,提升了系统性能。
- Confirm阶段和Cancel阶段的方法具备幂等性,能够保证分布式事务执行完毕后数据的一致性。
- TCC分布式事务解决方案由主业务发起整个事务,无论是主业务还是分支事务所在的业务,都能部署为集群模式,从而解决了XA规范的单点故障问题。
缺点:
- 代码需要耦合到具体业务中,每个参与分布式事务的业务方法都要拆分成Try、Confirm和Cancel三个阶段的方法,提高了开发成本。
热门推荐
打呼噜挂什么科室检查比较好
四柱八字详解测算,揭示命运之谜-专业解读与应用
泰安三日游:网红打卡地和美食攻略
贵阳观山湖的大平层,为什么那么贵?
TRIZ算法的主要流程和步骤:神奇的矛盾矩阵
臀部疼痛是咋回事?重点关注这 7 种病!
还款协议书的法律意义是什么?律师分享撰写要点与注意事项
临汾:“帝尧之都”的古韵与新风
掌握中医意象思维:解锁人体健康与疾病诊治的实用密码
一文读懂:牙齿敏感与蛀牙的区别及应对方法
影视台词集体滑坡?被流量绑架的语言艺术何去何从
伦敦位于英国什么方位
羽绒被芯与被子,二者的区别详解
别被金庸骗了!《射雕英雄传》中的郭靖大侠,历史上确有其人
刘方平《月夜/夜月》全诗原文、注释、翻译和赏析
如何把多个excel工作表合并?Excel合并多个工作表的7种方法详解
科学选择主食,助力健康减脂
李开复、陆奇、沈向洋、 洪小文四人的早期奋斗故事
面色潮红是什么原因
下午五点喝茶叶水会失眠?全面解析喝茶与睡眠的关系
男性做完胸透/X光/CT后三个月才能备孕?凭啥?
君住长江头——长江上游水环境现状及影响如何?丨长江经济带
植物象征父母之爱的意义与表达方式(以植物为媒介)
怎么确定掉头车被撞
怎么确定掉头车被撞
這樣沖泡咖啡更濃郁?一篇秒看懂壓力式沖泡咖啡好喝原理!
总算有人把智能体记忆说清楚了
让家告别阴暗!6 招提升室内采光,轻松打造明亮舒适的居住空间
奶油色与胡桃木:现代简约与复古情怀的家装完美结合
朱砂的功效与作用佩戴禁忌