二阶段提交

✍ dations ◷ 2025-12-09 21:37:17 #分布式计算,数据管理,计算机科学

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

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

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

.

相关

  • 中式餐桌礼仪中式餐桌礼仪指华人的餐桌礼仪,和其他中式礼仪一样,一切以体现等级制度和尊卑的儒家思想为原则。中国古代进食的时候讲究很多,例如坐次,女子不上席,吃饭不能说话等等。几乎中国古
  • 亚丁population_blank2 人亚丁(عدن),也门共和国的临时首都、经济中心,亚丁省省会,重要国际港口,也是前也门民主人民共和国(南也门)的首都。爆发2014-15年也门政变与也
  • 工人工人,若指从事某种职业的劳动者,则是体力工,内部称为职员或员工。多指工业生产领域,依靠出卖劳动力获取报酬的人,通常指“体力劳动者”。工人一般指工厂中生产工序的人,除了工厂的
  • 兰炭鳄兰炭鳄属(学名:Lanthanosuchus)是副爬行动物的一属,生存于二叠纪晚期的俄罗斯鞑靼斯坦,完整身长估计约75公分。
  • 陈裕璋陈裕璋(1955年9月18日-),台湾金融界要人,曾任中华民国金融监督管理委员会主委;历任财政金融与台北市政府多项要职。
  • 美国航空母舰本列表收录了美国海军己退役或现役中的航空母舰,包括船级属于CV、CVA、CVB、CVL或CVN的全部舰只。编号在CVA-58之后的都属于超级航空母舰(排水量超过75,000吨),CVN-65和CVN-68以
  • 阿拉伯狼阿拉伯狼(学名:Canis lupus arabs)是狼的一个亚种。曾经广泛分布于阿拉伯半岛,但现在仅生活在以色列南部、阿曼、也门、约旦、沙特阿拉伯等地的较小范围内,在埃及西奈半岛的部分
  • 亨利四世 (法兰西)(伟大的、贤明的)亨利四世(法语:Henri IV,1553年12月13日-1610年5月14日),本名“亨利·德·波旁”(“一说‘亨利·德·纳瓦尔’”),纳瓦拉国王(恩里克三世·德·纳瓦尔,1572年-1610年),继而
  • 闪刷闪刷(英文:LabelflashTM)是一项近似于光速写的光碟标签刻印技术。此项技术是由NEC在2005年12月正式公开,并获得山叶株式会社的授权,整合该公司早前所开发的DiscT@2标签打印技术。
  • 亚历桑德罗·尼沃拉亚历桑德罗·尼沃拉(英语:Alessandro Nivola,1972年6月28日-)是一名美国男演员和监制。尼沃拉1972年出生在美国马萨诸塞州波士顿。他的母亲维吉尼亚是艺术家。父亲彼得罗·尼沃拉