二阶段提交

✍ dations ◷ 2025-11-24 05:20:50 #分布式计算,数据管理,计算机科学

二阶段提交(英语:Two-phase Commit)是指在计算机网络以及数据库领域内,为了使基于分布式系统架构下的所有节点在进行事务提交时保持一致性而设计的一种算法。通常,二阶段提交也被称为是一种协议(Protocol)。在分布式系统中,每个节点虽然可以知晓自己的操作时成功或者失败,却无法知道其他节点的操作的成功或失败。当一个事务跨越多个节点时,为了保持事务的ACID特性,需要引入一个作为协调者的组件来统一掌控所有节点(称作参与者)的操作结果并最终指示这些节点是否要把操作结果进行真正的提交(比如将更新后的数据写入磁盘等等)。因此,二阶段提交的算法思路可以概括为: 参与者将操作成败通知协调者,再由协调者根据所有参与者的反馈情报决定各参与者是否要提交操作还是中止操作。

需要注意的是,二阶段提交(英语:2PC)不应该与并发控制中的二阶段锁(英语:2PL)混淆。

二阶段提交算法的成立基于以下假设:

以下对二阶段提交算法分阶段进行说明。

有时候,第一阶段也被称作投票阶段,即各参与者投票是否要继续接下来的提交操作。

当协调者节点从所有参与者节点获得的响应消息都为"同意"时:

如果任一参与者节点在第一阶段返回的响应消息为"终止",或者协调者节点在第一阶段的询问超时之前无法获取所有参与者节点的响应消息时:

有时候,第二阶段也被称作完成阶段,因为无论结果怎样,协调者都必须在此阶段结束当前事务。

下述流程图简单示意了二阶段提交算法中协调者和参与者之间的通信流程

    协调者                                              参与者                              QUERY TO COMMIT                -------------------------------->                              VOTE YES/NO           prepare*/abort*                <-------------------------------commit*/abort*                COMMIT/ROLLBACK                -------------------------------->                              ACKNOWLEDGMENT        commit*/abort*                <--------------------------------  end

"*" 所标记的操作意味着此类操作必须记录在稳固存储(英语:Stable storage)上.

二阶段提交算法的最大缺点就在于它的执行过程中间,节点都处于阻塞状态。即节点之间在等待对方的响应消息时,它将什么也做不了。特别是,当一个节点在已经占有了某项资源的情况下,为了等待其他节点的响应消息而陷入阻塞状态时,当第三个节点尝试访问该节点占有的资源时,这个节点也将连带陷入阻塞状态。

另外,协调者节点指示参与者节点进行提交等操作时,如有参与者节点出现了崩溃等情况而导致协调者始终无法获取所有参与者的响应信息,这时协调者将只能依赖协调者自身的超时机制来生效。但往往超时机制生效时,协调者都会指示参与者进行回滚操作。这样的策略显得比较保守。

.

相关

  • 巩膜巩膜属于眼球纤维膜,在眼球内,约占眼球纤维膜的5/6,为乳白色不透明的纤维膜,起保护眼球内容物和维持眼球形态的作用。巩膜前缘接角膜缘,后方与视神经的硬膜鞘相延续。巩膜与角膜
  • 玫瑰糠疹玫瑰糠疹(Pityriasis rosea)是一种皮疹。它是良性的,但在某些情况下可能会造成很大的不适。 典型的玫瑰糠疹,开始出现单一的母斑样的皮肤损害,然后在一周或两周内,出现全身广泛的
  • 蒲团蒲团,一种坐壂,外型类似小型的枕头。通常的形状是圆形,也有半月形等其他的形状,中间填充木棉或荞麦瞉等松软的填充物。在佛教中,它经常被当成是辅助禅坐的用具。通常的使用方法是
  • 人生意义生命的意义是一个解构人类存在的目的与意义的哲学问题。这个概念通过许多相关问题体现出来,例如:“我为何在此”“什么是生命?”“生命的真谛是什么?”。在历史长河中,它也是哲学
  • 消耗战消耗战是一种军事战略,交战国会以人力与物资使另一方的军事力量达到崩溃,进而赢得战争。此战略常伴随着巨大的伤亡与损失,并往往是物资量较多者得胜,第一次世界大战的西线战场是
  • 车前子车前草(学名:Plantago asiatica)为车前草科车前草属的物种,是一种多年生草本植物,又名蕮(音同“惜”)、车轮菜子、猪耳朵棵子、五更草、田灌草、牛舌草子、车轱辘草子,诗经中称之为
  • 威斯公学西敏圣彼得皇家书院(英语:The Royal College of St. Peter in Westminster),简称西敏公学(Westminster School),座落于伦敦市中心西敏寺周边范围,是英国一所有名的独立学校。西敏公
  • 云豹属云豹属(学名:Neofelis)包含两个物种,云豹(N. nebulosa)和巽他云豹(N. diardi)。后者生物学家于2006年才将其升为一个物种,之前则将其视为云豹的一个亚种。这个属从其他大猫被独立出来
  • 藤球藤球(印尼语 : "sepak takraw"; 马来语 :"sepak raga"; 爪夷文: سيڤق تكراو or سيڤق راڬا; 泰语:ตะกร้อ, 皇家音译:takro, 发音:; 高棉语:"សីដក់
  • 不伦瑞克大教堂坐标:52°15′51″N 10°31′27″E / 52.26417°N 10.52417°E / 52.26417; 10.52417不伦瑞克大教堂(德语:Dom St. Blasii)是位于德国城市不伦瑞克的一座信义宗教堂。不伦瑞克大