首页 > 其他分享 >TCC(Try/Confirm/Cancel)

TCC(Try/Confirm/Cancel)

时间:2023-07-13 21:03:55浏览次数:32  
标签:Confirm Try Cancel TCC 参与者 分布式

学习分布式事务心得:TCC(Try/Confirm/Cancel)

在学习分布式事务的过程中,我深入研究了一种常见的分布式事务解决方案——TCC(Try/Confirm/Cancel)。

TCC概述

image-20230711152244586

TCC是一种基于补偿机制的分布式事务处理模式。它将一个复杂操作拆分为三个阶段:尝试(Try)、确认(Confirm)和取消(Cancel),以确保多个服务之间数据的一致性。

三个关键步骤

步骤一:尝试(Try)

  • 在该阶段,参与者会预留必要资源,并执行业务逻辑。
  • 如果所有参与者都成功完成,则进入下一步;否则执行取消操作。

步骤二:确认(Confirm)

  • 在该阶段,协调者向所有参与者发送确认请求。
  • 参与者执行最终确认,并释放已经预留的资源。
  • 如果所有参与者都成功完成,则整个事务提交;否则执行取消操作。

步骤三:取消(Cancel)

  • 在该阶段,协调员向所有参与度发送回滚请求。
  • 参与度根据回滚请求来进行相应清理工作,并释放已经预留的资源。

优点及注意事项

通过学习TCC模式,我发现它具有以下优点:

  1. 灵活性:TCC模式提供了更细粒度的控制,可以根据业务需求自定义每个步骤的逻辑。
  2. 可靠性高:通过确认和取消操作,确保了事务在各参与者之间的数据一致性。
  3. 扩展性好:TCC模式可以方便地与分布式系统集成,并支持水平扩展。

然而,TCC模式也存在一些挑战和注意事项:

  1. 实现复杂度高:相比于传统的二阶段提交协议来说,实现一个稳健且可靠的TCC机制需要更多工作量。
  2. 幂等性要求:为了应对网络异常或重试场景,在设计业务逻辑时需要考虑到接口调用是具备幂等性特征。

小结

学习和研究分布式事务解决方案对于构建可靠、高效并且具有良好伸缩性的分布式系统至关重要。尽管TCC模式在处理复杂事务场景中表现出色,并被广泛使用,但我们仍然需要根据实际情况选择最合适的解决方案。

标签:Confirm,Try,Cancel,TCC,参与者,分布式
From: https://blog.51cto.com/u_15399050/6715681

相关文章

  • luogu0_entry
    新手场和普及场前6关新手场顺序与分支P1422小玉家的电费控制输出精度:cout.xxx();待查询P1089津津的储蓄计划注意int和float相乘,输出格式用"%d"数字会面目全非P1909买铅笔INT_MAX存在<limits.h>里,不加.h也不行循环P1035级数求和我写了一个求和的函数Sn(in......
  • 泛型 、entry词遍历方式、迭代器方式遍历
    示例代码publicclassFanxing<T>{//类的模板,类在编译时未确认privateTa;privateTb;publicTadd(){returna;}publicTsub(){returnb;}@Testpublicvoidfanxing(){List<String>list=newArra......
  • MIT 6.S081 Isolation & System call entry/exit
    Trap机制程序运行往往需要完成用户空间和内核空间的切换,每当:程序执行系统调用(systemcall);程序出现了pagefault等错误;一个设备触发了中断;都会发生这样的切换。这里用户空间切换到内核空间通常被称为trap,因此有时候我们会说程序“陷入”到内核态。trap机制需要尽可能......
  • TryHackMe | HackPark Writeup
    TryHackMe|HackParkWriteup可以用autorecon进行波信息收集,可以自动联动nmap和gobuster,但是扫的时间很久所以我就直接拿nmap扫了可以看到俩个开放端口803389Task1DeploythevulnerableWindowsmachine Whatsthenameoftheclowndisplayedonthehomepage?......
  • cancel
    cancel取消已存在的打印任务补充说明cancel命令用于取消已存在的打印任务。语法cancel(选项)(参数)选项-a:取消所有打印任务;-E:当连接到服务器时强制使用加密;-U:指定连接服务器时使用的用户名;-u:指定打印任务所属的用户;-h:指定连接的服务器名和端口号。参数打印任务号:......
  • rtmp的拉流方式之ZLMRTCClient
    关于直播流rtmp的拉流因为延迟少比较好用(因为手机不支持flash,所以不支持手机浏览器)zlmrtcclient是老式插件,在vue项目中使用的话需要在index.html里面进行引入,然后在项目中使用  标签代码<videoid='video1'class="jswebrtc"autoplaymuted="true"width="100%"height......
  • 聊聊使用错误采集平台sentry踩到的坑
    前言sentry简介Sentry是一款专业的企业级错误跟踪和日志分析工具,旨在帮助开发人员、管理员和产品经理跟踪、分析和解决应用程序错误和性能问题。Sentry的主要功能和优点包括:错误跟踪:Sentry可以跟踪应用程序中的错误,并将它们记录下来,以便开发人员能够快速定位和解决问......
  • 【855】country converter, ISO alpha 3
    Ref:country-converter1.0.0Ref:Python-pycountry|UnderstandHowtoUsepycountryThesetwopythonlibrariesarebothusedtoprocessinformationaboutcountrynames.Forthelibraryofcountry-converter,itcanbeusedtoconvertthedirtydata(coun......
  • Python | 使用try-except导包
    导包的时候我们可能会遇到这样的代码:try:from.hugmodelimportHugModelexceptException:pass这段代码的作用是尝试导入名为HugModel的模块,如果导入失败则不做任何操作,而是直接跳过异常。其中.表示当前包,也就是相对导入方式。这种写法通常用于可选的依赖项或......
  • TryHackMe | Alfred Writeup
    TryHackMe|AlfredWriteupTask1InitialAccess1.1Howmanyportsareopen?nmap-sC-sV-AIP 明显3个开放端口1.2-Whatistheusernameandpasswordfortheloginpanel(intheformatusername:password)问我们登入的账号密码是啥研究了半天不知道密码......