二阶段提交

✍ dations ◷ 2025-11-21 02:12:52 #分布式计算,数据管理,计算机科学

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

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

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

.

相关

  • 霍乱弧菌霍乱弧菌(Vibrio cholerae)是革兰氏阴性菌,菌体短小呈逗点状,有单鞭毛、菌毛,部分有荚膜。共分为155个血清群,其中O1群和O139群可引起霍乱。医学导航:病菌细菌(分类)gr+f/gr+a(t)/gr-p(c
  • 6第6周期元素是元素周期表第六行(即周期)的元素,包括镧系元素。该周期元素都具有一定毒性。有:第1周期元素 - 第2周期元素 - 第3周期元素 - 第4周期元素 - 第5周期元素 - 第6周期
  • 制糖制糖是制造食糖的产业,原料来源为甘蔗或甜菜,因其产品的体积远小于原料,是一种原料区位的产业,目前生产糖最多的国家是古巴。全世界糖业的大规模发展与地理大发现有关,欧洲人在西
  • 元亨寺坐标:22°31′N 120°12′E / 22.51°N 120.20°E / 22.51; 120.20元亨寺,原名元兴寺,又称作打鼓岩元亨寺,旧称岩仔、鼓山岩、打鼓岩,是位于台湾高雄市鼓山区鼓岩里(旧称兴隆里)的
  • 接触力接触力(Contact force)是描述一种在宏观尺度下需要触碰到才能展现出来的力,例如:拉力、推力、浮力、摩擦力、正向力等。但是在微观尺度下,接触力仍是电磁力的作用所表现出的现象
  • 马鹿马鹿可以指:
  • 太极旗飘扬《太极旗飘扬》(朝鲜语:태극기 휘날리며/太極旗 휘날리며,英语:Taegukgi)是一部于2004年上映的韩国电影,由知名韩国导演姜帝圭制作,耗资130亿韩元。本片由演员张东健及元斌主演,两人
  • 乔诺斯群岛乔诺斯群岛(西班牙语:Archipiélago de los Chonos)是智利伊瓦涅斯将军的艾森大区沿太平洋东岸的多山群岛。绝大部分岛屿都有草木丛生,无人居住。莫拉莱达海峡(Canal Moraleda)
  • 帕特里克·亨利帕特里克·亨利(英语:Patrick Henry,1736年5月29日-1799年6月6日)生于弗吉尼亚州汉诺威,死于弗吉尼亚州夏洛特县),美国政治家,美国革命时期卓越的领导人,曾两次担任弗吉尼亚州州长(1776
  • 各国铜产量列表年产量(千公吨)基于英国地质调查所2008年6月的数据。