分布式协议 3PC

3PC,是Three-Phase Commit 的缩写,即三阶段提交,是2PC的改进版,其将二阶段提交协议的“提交事务请求”过程一份为二,形成了CanCommit、PreCommit和doCommit 三个阶段组成的事务处理协议。
这里写图片描述

  1. 阶段一:CanCommit
    1).事务询问: 协调者向所有的参与者发送一个包含失去内容canCommit请求,询问是否可以执行事务的提交操作,并等待各个参与者的响应。
    2).每个参与者向协调者反馈事务的响应:参与者在接受来自协调者canCommit请求后,正常情况下如果自身认为可以顺利执行事务,那么会反馈yes响应,并进入预备状态,否则返回No响应。
  2. 阶段二:PreCommit
    在阶段二中,协调者会根据各个参与者的反馈情况来决定是否可以进行事务的PreCommit操作,正常情况下,包含俩种可能。
    执行事务预提交
    1).发送预提交请求。 协调者向所有参与者获得的反馈都是Yes,那么会进入Prepared阶段。
    2).事务预提交。 参与者接收到preCommit请求后,会执行事务操作,并将Undo和Redo信息记录到事务的日志中。
    3).各参与者向协调者反馈事务执行的响应。如果参与者成功执行了事务操作,就会给协调者Ack响应,同时等待最终指令:提交(commit)或终止(abort)。
    中断事务
    假如任何一个参与者向协调者反馈了No的响应,或者等待超时之后,协调者尚无法接受到所有参与者的反馈响应,那么久中断事务。
    1). 发送中断事务请求:协调者向所有参与者发送abort请求。
    2). 中断事务: 无论是来自协调者的abort请求,或者是在等待协调者过程中出现的超时,参与者都会中断事务。
  3. 阶段三:doCommit
    提交事务
    1).发送提交请求:进入这一阶段,假设协调者处于正常工作状态,并且它接收到了来自所有参与者的Ack响应,那么将它从“预提交”状态转换为“提交”状态,并向所有的参与者发送doCommit请求。
    2).事务提交。参与者接受到doCommit请求后,会正式执行事务提交操作,并完成提交之后释放在整个事务执行期间占用的服务资源。
    3).反馈事务提交结果。参与者在完成事务提交之后,向协调者发送Ack消息。
    4).完成事务:协调者接收到所有参与者反馈Ack消息之后,完成事务。
    中断事务
    进入这一阶段,假设协调者处于正常工作状态,并且任意一个参与者向协调者反馈了No响应,或者等待超时,协调者尚无法接收到所有参与者的反馈的响应,那么就会中断事务。
    1).发送中断请求。协调者向所有参与者节点发送abort请求。
    2).参与者接收到会利用其在第二阶段中记录的Undo信息来执行事务的回滚操作,并在完成回滚后释放整个事务执行期间占用的资源。
    3).反馈事务回滚结果。参与者在完成事务回滚后、向协调者发送Ack消息。
    4).中断事务:协调者接收到所有参与者反馈Ack消息之后,中断事务。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
TCC(Try-Confirm-Cancel)是一种分布式事务解决方案,它通过将一个事务拆分成三个阶段(Try、Confirm、Cancel)来保证事务的一致性。而在分布式环境下,TCC通常使用3PC协议来实现。 3PC(Three-Phase Commit)协议是一种常用的分布式事务协议,它将一个分布式事务分为三个阶段(CanCommit、PreCommit、DoCommit),并通过协调者(Coordinator)和参与者(Participant)之间的消息交换来实现事务的原子性和一致性。 具体来说,TCC使用的3PC协议流程如下: 1. CanCommit 阶段:协调者向参与者发送CanCommit请求,询问参与者是否可以执行该事务。如果参与者可以执行,则发送Yes响应,否则发送No响应。 2. PreCommit 阶段:协调者向参与者发送PreCommit请求,告诉参与者可以执行该事务,并让它准备好提交或撤销事务。如果参与者准备好了,则发送Ack响应。 3. DoCommit 阶段:协调者向参与者发送DoCommit请求,告诉参与者提交该事务。如果参与者成功提交了事务,则发送Ack响应,否则发送Abort响应。 如果任何一个阶段出现问题,协调者会向参与者发送Cancel请求,撤销事务。 需要注意的是,在TCC中,Try阶段和Cancel阶段由应用程序自己来实现,3PC协议主要用于Confirm和DoCommit阶段的协调。此外,由于3PC协议的复杂性和性能问题,TCC并不适用于所有的分布式事务场景,开发者需要根据具体的业务需求来选择合适的解决方案。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值