分布式协同 - 分布式事件_TCC办理方案

[复制链接]
发表于 2025-11-23 22:00:02 | 显示全部楼层 |阅读模式

导图



Pre

随着大流量、高并发业务场景的出现,对体系可用性的要求变得越来越高,这时 CAP 理论和 BASE 理论渐渐进入人们的视野,柔性事件成为分布式事件的紧张实现方式,TCC 作为赔偿事件也位列此中.
TCC(Try-Confirm-Cancel)的焦点头脑是对于每个资源的原子操纵,应用步伐都必要注册一个与此操纵对应简直认操纵和赔偿(打消)操纵。此中确认操纵负责在原子操纵实行乐成时举行事件提交,赔偿操纵负责在原子操纵实行失败时对事件举行回滚。

流程图

   

  • Try阶段(资源锁定)

    • 客户端(A)发起哀求,关照服务B举行事件操纵。
    • 服务B实行Try操纵,实验锁定资源(比方扣款或占用库存)。此时,服务B的资源被锁定,但尚未提交任何操纵。
    • 服务B返回给客户端A,表现资源已锁定,并预备进入下一阶段。

  • Confirm阶段(提交)

    • 客户端(A)根据其他服务的相应,决定是否进入Confirm阶段。
    • 服务C吸收到确认哀求后,实行Confirm操纵,将之前的预处理处罚结果提交(如真正扣款、更新库存等)。
    • 假如操纵乐成,服务C返回确认乐成给客户端A,表现事件提交完成。

  • Cancel阶段(回滚)

    • 假如在Try阶段发现某些条件未告竣(比方余额不敷,库存不敷等),大概在Confirm阶段发生错误,客户端或服务将哀求进入Cancel阶段。
    • 服务C会实行Cancel操纵,回滚之前的操纵(如退还款子或规复库存)。
    • 服务C返回取消散败信息,客户端A可以根据返回结果举行相应的调停步伐。


2PC VS 3PC VS TCC

2PC(Two-Phase Commit,二阶段提交)

2PC协议是分布式事件中最底子的协议,分为两个阶段:

  • 预备阶段(Voting Phase):和谐者(通常是事件管理器)向全部到场者发送“预备提交”哀求,要求到场者实行事件操纵并保存结果,但不提交数据,到场者必要返回“预备好”或“无法提交”的相应。
  • 提交阶段(Commit Phase):假如全部到场者都返回“预备好”,则和谐者发送“提交”哀求,全部到场者正式提交操纵。假如任何一个到场者返回“无法提交”,则和谐者发送“回滚”哀求,全部到场者回滚操纵。
长处


  • 实现简单,易于明白。
缺点


  • 壅闭标题:假如和谐者瓦解,到场者会不绝等待和谐者的决定,造成体系壅闭。
  • 单点故障:和谐者是单点,若和谐者失败,事件无法完成。
  • 资源占用:到场者必要长时间持有锁,直到事件提交或回滚。

3PC(Three-Phase Commit,三阶段提交)

3PC是在2PC底子上改进而来的,目标是办理2PC中的壅闭标题。它增长了一个额外的阶段来举行更细粒度的事件状态控制。

  • 扣问阶段(CanCommit Phase):和谐者扣问全部到场者是否可以实行事件,并预备提交。到场者在此阶段举行须要的预处理处罚。
  • 预提交阶段(PreCommit Phase):全部到场者确认可以提交后,和谐者要责备部到场者举行预提交操纵。此时,到场者已经做好提交操纵的预备,但还没有真正提交。
  • 提交阶段(DoCommit Phase):和谐者正式关照全部到场者提交操纵,事件正式完成。
长处


  • 改进了2PC的壅闭标题,由于3PC在和谐者瓦解后到场者不会不绝等待,可以通过预提交阶段包管划一性。
缺点


  • 实现复杂。
  • 仍然存在肯定的网络分区和故障规复标题。
TCC(Try-Confirm-Cancel)

TCC是分布式事件处理处罚中较为复杂的一种方案,通常在资源管理和高划一性要求的场景下利用。它将分布式事件拆解为三个阶段:Try、Confirm和Cancel。

  • Try(实验):在此阶段,到场者实行实验操纵,如锁定资源,并确保幂等性。Try阶段完成后,体系处于“预提交”状态,但未真正提交数据。
  • Confirm(确认):在全部操纵都顺遂完成时,和谐者关照各到场者提交事件。此时全部操纵都是终极的提交。
  • Cancel(取消):假如某些操纵失败,大概出现非常,和谐者会关照到场者回滚操纵,规复到事件前的状态。
长处


  • 高度可控,支持显式的回滚。
  • 支持幂等性操纵,能更好地处理处罚非常场景。
缺点


  • 必要在每个到场者上实现Try、Confirm和Cancel逻辑,复杂度较高。
  • 性能和资源斲丧较大,由于每个到场者都必要举行锁定和操纵规复。

2PC、3PC与TCC的区别

特性2PC3PCTCC阶段2个阶段:预备、提交3个阶段:扣问、预提交、提交3个阶段:实验、确认、取消壅闭标题存在,和谐者瓦解时到场者会不绝壅闭办理了部门壅闭标题,但不完全消除无壅闭标题,失败时有明白的回滚操纵容错本领较差,和谐者故障会导致整个事件失败相较2PC,容错本领进步,但仍有不敷较强,支持回滚,得当高度容错和划一性要求的场景资源占用到场者必要长时间持有锁,资源占用较大到场者必要长时间持有锁,资源占用较大各到场者在差别阶段持有锁,资源占用较大复杂度简单实现,但功能受限实现较复杂,增长了容错机制实现较复杂,必要业务逻辑支持实用场景划一性要求较低的小型分布式体系对容错性有肯定要求的分布式事件体系高划一性、高可用性要求的复杂场景,尤其是金融、库存管理等
2PC、3PC与TCC的接洽



  • 相似性:这三种协议都属于分布式事件协议,目标是包管分布式体系中多个到场者的划一性和数据的可靠性。它们都涉及到和谐者与到场者之间的交互,以及怎样确保事件的划一性和乐成提交。
  • 演化关系:2PC是最早的分布式事件协议,固然实现简单,但存在壅闭和单点故障的标题。为了克制这些标题,3PC在2PC的底子上增长了一个预提交阶段,进一步办理了壅闭标题。而TCC则通过引入Try、Confirm和Cancel三个阶段,提供了更机动的事件控制,得当于更复杂的分布式事件场景。
  • 应用场景重叠:这三种协议在一些场景中可以相互替换,比方金融体系的付出操纵等高划一性场景。但在差别的体系需求下,选择的协议会有所差别。TCC特别得当对事件回滚有要求且资源操纵可幂等的场景。


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表