二阶段提交

✍ dations ◷ 2025-11-03 23:59:22 #分布式计算,数据管理,计算机科学

二阶段提交(英语: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)上.

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

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

.

相关

  • rDNA核糖体DNA(Ribosomal DNA,rDNA)是一种DNA序列,该序列用于rRNA编码。核糖体是蛋白质和rRNA分子的组合,翻译mRNA分子以产生蛋白质的组件。如该图所示,真核生物的rDNA包括一个单元段,
  • (+)ssRNA核糖核酸病毒(英语:RNA virus),又称RNA病毒,其遗传物质为RNA,这些核糖核酸通常是单链RNA(ssRNA),但是也可能是双链RNA(dsRNA)。由RNA病毒感染造成的著名人类疾病包括艾滋病(AIDS)、埃博
  • 1858 Bradford sweets poisoning1858年布拉德福德糖果中毒事件(1858 Bradford sweets poisoning)是1858年于英国布拉德福德发生的食物中毒事件,当时从市场摊贩出售糖果被掺入砷,造成当地约200多人砷中毒,其中21
  • 埃托雷·索特萨斯埃托雷·索特萨斯(英语:Ettore Sottsass,1917年9月14日-2007年12月31日)是二十世纪一位重要的意大利建筑师和设计师。他的设计包含家具、珠宝、玻璃、灯光、家居用品、办公设备、
  • 二烯烃二烯烃指含有分子中含有两个碳碳双键的有机化合物。根据两个双键位置的不同,二烯烃又可分为:其中以共轭二烯烃最为重要。 共轭二烯烃中以1,3-丁二烯最为典型。与其它烃加成反应
  • 亚洲生产力组织亚洲生产力组织(英语:Asian Productivity Organization,缩写APO)是一个亚太地区的国际组织,以提高生产力为目的。该组织根据一份1961年签订的政府间协议设立,旨在通过生产力的提升
  • 维也纳快速维也纳迅速体育俱乐部(简称:维也纳迅速,英文:Rapid Vienna,德语:SK Rapid Wien)是一间位于奥地利首都维也纳的体育俱乐部,成立于1898年。维也纳迅速是维也纳市中两队最著名的俱乐部
  • 晋语.mw-parser-output .IPA{font-family:"Charis SIL","Doulos SIL","Linux Libertine","Segoe UI","Lucida Sans Unicode","Code2000","Gentium","Gentium Alternative","TITU
  • 爪鲵爪鲵(学名:Onychodactylus fischeri)为小鲵科爪鲵属的两栖动物,俗名水蛇子。在中国大陆,分布于辽宁、吉林等地,常栖息于石块较多的山间溪流。其生存的海拔下限为 1000米。该物种的
  • 月球正面月球正面是月球永远朝向地球的半球,而相对的另外半球被称为月球背面。因为月球绕地球公转的周期和它绕着自己的轴心自转的周期相同,因此在地球上只能看见月球的一面,这种情形称