首页 > 其他分享 >【2022-12-26】TCC流程简单分析

【2022-12-26】TCC流程简单分析

时间:2022-12-26 17:24:36浏览次数:58  
标签:26 12 Confirm 业务 Cancle Try 2022 执行 TCC

【2022-12-26】TCC流程简单分析

参考链接:https://developer.aliyun.com/article/682871

1.TCC是什么

分布式事务的解决方案。TCC分别是Try、Confirm、Cancle的简称

  1. Try阶段检查并预留资源

  2. Confirm执行

  3. Cancle取消

 

2.TCC架构

 

image.jpeg

 - 一个完整的业务活动由一个主业务服务与若干从业务服务组成(从业务服务就是我们需要保证事务一致的各个子服务)。

 - 主业务服务负责发起并完成整个业务活动。

 - 从业务服务提供TCC型业务操作。

 - 业务活动管理器控制业务活动的一致性,它登记业务活动中的操作,并在业务活动提交时进行confirm操作,在业务活动取消时进行cancel操作

 

 

3.TCC阶段

TCC大致包含2个节点,1是Try,1是Confirm/Cancle

  • Try

  1. 完成所有必要业务检查

  2. 预留后续执行的业务资源

 

  • Confirm

  1. 只使用Try阶段预留资源、直接执行业务

  2. 重复Confirm须保证幂等

 

  • Cancle

  1. 释放Try阶段预留资源,使之回到最初的状态

  2. 重复Cancle须保证幂等

 

 

4.举个例子

例子:A和B同时向C转100,须保证同时成功,且A、B、C物理不在同一Mysql节点

  • Try

  1. 检查A账户资金足够100

  2. 锁定A账户100资金到冻结户

  3. 检查B账户资金足够100

  4. 锁定B账户100资金到冻结户

 

  • Confirm

  1. Try阶段成功了,则依次执行将A和B冻结户转到C的操作(同时要确保重复执行Confirm幂等)

 

  • Cancle

  1. Try阶段失败or Confirm期间A执行成功但是B执行失败了,则执行Cancle(同时要确保重复执行Cancle幂等)

 

 

5.TCC优缺点

  • 优点

  1. 因为Try期间锁定了预留资源,因此Confirm一般都是会执行成功的

  2. Try期间的资源锁定都是在业务代码中完成,不会blockDB

 

  • 缺点

  1. 由于DB产生次数较多,因此性能有一定损耗,并且TCC整体事务时间被拉长

  2. 从业务服务越多,期间某一Confirm失败的可能性比较高,整体执行Cancle的概率比较大,处理时间也就比较长。(因为是执行失败一个,则会从头遍历执行Cancle方法,节点越多,要被执行的节点也就越多)

 

 

  • 附一张内部执行的流程图

  • 内部执行失败,会有定时任务补偿(在重试一定次数之内的未执行到终态的事务任务,会一直重试执行)

 

image.jpeg

标签:26,12,Confirm,业务,Cancle,Try,2022,执行,TCC
From: https://www.cnblogs.com/ningxinjie/p/17006239.html

相关文章

  • 2022-A survey of modern deep learning based object detection models
    #Asurveyofmoderndeeplearningbasedobjectdetectionmodels#paper1.paper-info1.1MetadataAuthor::[[SyedSahilAbbasZaidi]],[[MohammadSamarAns......
  • 2012 ASP.NET/IIS MVP
    2012年4月1日晚上收到微软的邮件,告知我的ASP.NET/IISMVPRenew成功,从2006开始已经连任ASP.NETMVP7届。从2011年4月4日开始,ASP.NET和IIS的MVP合并了......
  • 闲话 22.12.26
    闲话下一个目标就是LP!我觉得在闲话里写这种东西有奇效呢(上次也是上上次也是抄书会被干吗?我不知道啊我反正只看从网上找到的资料模拟赛T2\(O(n)\)?这种东西不算不......
  • Selenium26-测试固件
    Fixture(测试固件)Fixture(测试固件、也叫作测试夹具),书写在TestCase代码中的代码结构,用于前期初始化准备和后期清理收尾工作本质就是一些名称固定的方法测试固件分......
  • CSP2022 游记
    ChangeLog:2022.12.26开坑。暑假是好多场S模拟赛。每一场都润了。基本上就是榜上一半左右的位置,而榜上还包括一些混日子的暑假刚学的同学。感觉这样下去真的要寄......
  • ts12_构造函数
     构造函数,会在对象创建时调用,new关键字会执行constructorclassDog{name:string;age:number;//构造函数,会在对象创建时调用,new关键字会执行construct......
  • 2022 i春秋冬季赛
    Miscnan'sanalysis下载附件之后,打开是一道流量数据包。开始分析流量,首先看到的是FTP流量追踪tcp,发现ftp账号密码先记录一下,接下来发现一个zip文件,选择原始数据,然后......
  • Polynomial Round 2022 E. Two Chess Pieces(dfs+dp)
    E.TwoChessPieces题目大意:给定n个节点的以1为根节点的有根树,现在在根节点上有两颗棋子,我们分别给他们规定了它们所必须经过的点,每次可以顺着树移动距离1,但是必须使得......
  • 2022i春秋-冬季赛nan’s analysis
    下载附件,在tcp的0流可以看到一个keyisChunqiuGame00504在3流处得到压缩包,密码不是上面那个,后面对附件找了几个小时都没发现压缩包密码,我是笨比。后面才看到有在线环境。......
  • python 异常处理 12
    当python程序在执行期间发生错误时,如果编写了处理该异常的代码,程序将继续运行;如果未对异常进行处理,程序将停止并显示traceback,其中包含有关异常的报告。异常是使用try......