二阶段提交

✍ dations ◷ 2025-05-18 00:45:32 #分布式计算,数据管理,计算机科学

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

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

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

.

相关

  • 赫尔曼·埃米尔·费歇尔慕尼黑大学 (1875-81) 埃尔朗根-纽伦堡大学 (1881-88) 维尔茨堡大学 (1888-92)阿尔弗雷德·斯托克(英语:Alfred Stock)赫尔曼·埃米尔·费歇尔(德语:Hermann Emil Fischer,1852年1
  • 色层分析色谱法(英语:chromatography,又称层析法)是一种分离和分析方法,在分析化学、有机化学、生物化学等领域有着非常广泛的应用。色谱法利用不同物质在不同相态的选择性分配,以流动相对
  • 聚类分析聚类分析(英语:Cluster analysis)亦称为群集分析,是对于统计数据分析的一门技术,在许多领域受到广泛应用,包括机器学习,数据挖掘,模式识别,图像分析以及生物信息。聚类是把相似的对象
  • d̪ð浊齿无咝塞擦音是一种辅音,被使用于一些口语中。国际音标写作⟨d͡ð⟩、⟨d͜ð⟩、⟨d̪͡ð⟩或⟨d̟͡ð⟩。此音常常是/ð/的同位异音。浊齿无咝塞擦音的特征包括:当符号
  • 梅斯赫奈特在古埃及神话中,梅斯赫奈特(也拼写为Mesenet、Meskhent 和 Meshkent)是生育女神及每个孩子的“卡”(护卫灵),灵魂的创造者,是他们灵魂的一部分,在孩子出生那一刻就无声无息地进
  • 炯奈语炯奈语是广西壮族自治区自称“炯奈”(.mw-parser-output .IPA{font-family:"Charis SIL","Doulos SIL","Linux Libertine","Segoe UI","Lucida Sans Unicode","Code2000","Ge
  • 北关区北关区是中华人民共和国河南省安阳市北部一个市辖区。面积59平方公里,2002年人口24万。邮政编码455001,区政府驻灯塔路。目前下辖:红旗路街道、灯塔路街道、解放路街道、豆腐营
  • 二里头遗址二里头遗址位于河南省洛阳市二里头村。1959年徐旭生带领团队以《左传》《汉书·地理志》等关于禹和鲧的记载为依据,考证“嵩”、“告”二字,在河南嵩山脚下告成镇进行考古挖掘
  • 千 (前缀)千(kilo)是一个国际单位制词头,表示因数1千(103,1 000),符号为k。英语kilo源自希腊语词语χίλιοι(chilioi),意为“千”。它起初是于1795年被安托万·拉瓦锡的研究小组所采用,并于1
  • 奥黛丽 (搞笑组合)奥黛丽(日语:オードリー,)是日本的搞笑艺人二人组,成员为若林正恭(担任吐槽角色)以及春日俊彰(担任装傻角色)。曾于2008年取得M-1大赛的第2名。若林正恭将组合的漫才风格命名为“ズレ