推荐好文 : 2PC二阶段提交和3PC三阶段提交

本文介绍了2PC(二阶段提交)和3PC(三阶段提交)协议,详细阐述了它们的工作原理、优缺点。2PC存在同步阻塞、单点故障和数据不一致等问题,而3PC通过增加超时机制缓解了这些问题,但仍然可能引发系统状态不一致的情况。
摘要由CSDN通过智能技术生成

一 . 2PC 二阶段提交协议算法(分为两阶段)

  1. 一个阶段是请求阶段(表决)
    请求阶段: 协调作者通知参与者准备对事务进行提交或者取消事务, 这时参与者开始执行本地策略,写redo和undo日志,但是不进行提交,此时参与者将告诉协调者自己的决策:成功(参与者执行本地方法成功)或取消(执行本地方法故障)

  2. 一个阶段是提交阶段(执行)
    提交阶段:跟据二阶段提交算法第一阶段的结果,成功或取消(如果参与者全部同意提交事务,则协调者通知参与者进行事物的提交,如果有参与者失败,则协调者通知参与者去取消事务的提交)参与者在接收到协调者发来的消息后才会执行相应的操作

  3. 二阶段提交算法的缺点:

    (1). 同步阻塞问题:执行过程中,所有参与节点都处于事务阻塞的(事务阻塞是指程序在等待调用结果时的状态,阻塞是指程序在没有得到调用结果之前都是处于线程被挂起状态,得到结果才返回,非阻塞是指不过有没有得到结果都不会阻塞当前线程)

    (2). 单点故障问题:由于协调者的重要性,一旦协调者发生故障,参与者就会一直阻塞下去,那么所有参与者都会处于锁定事务资源的状态中,无法继续完成事务操作.(如果协调者挂掉,可以重新选举出一个协调者,但是无法解决参与者处于阻塞状态的问题)

    (3). 数据不一致问题:在二阶段提交的第二阶段中,在协调者向参与者发送commit后,由于存在网络波动或者网络异常,一部分参与者接收到commit后会执行事务操作,但是没有接收到或者接收commit延迟的参与者就会处于无法完成事务操作的状态,从而会引起事务操作引起的数据不一致现象.

  4. 二阶段提交算法无法解决的问题:
    当协调者出错,同时参与者也出错时,两阶段提交就无法保证事务执行

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值