二阶段提交

✍ dations ◷ 2025-12-11 10:59:33 #分布式计算,数据管理,计算机科学

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

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

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

.

相关

  • 艾氏人体解剖学艾氏人体解剖学(英语:Acland's Video Atlas of Human Anatomy)是一部由路易斯维尔大学的罗伯特·阿克兰(Robert Acland)主持的解剖学视频课程。
  • 区域经济学区域经济学(Regional Economics),也称地区经济学。是经济学与地理学交叉而形成的应用经济学。空间经济学一词常作为区域经济学的同义词。当区域经济学的课题特别涉及到城镇时,则
  • Hsub2/subSsub2/sub二硫化氢(英语:Hydrogen disulfide),又称过硫化氢,是一种无机硫化合物,其化学式为H2S2,亦可计为(SH)2,其结构类似于过氧化氢(H2O2)与硫氧化氢(H2SO),外观为油状液体,且具有恶臭,常温下容易
  • 加文·胡德加文·胡德(英语:Gavin Hood,1963年5月12日-)是一位南非男导演、编剧、制片人和演员,以编剧和导演的奥斯卡最佳外语片《黑帮暴徒》(2005年)而知名。他是20世纪福克斯电影《X战警前传
  • 桶是一种圆柱形的容器,传统上以木材制成,称为木桶,但现时不少桶都是以金属或塑胶制成。桶通常用作盛载液体之用,如啤酒、原油等。
  • 斯托克顿市斯托克顿(Stockton,或译史塔克顿),当地华侨通译为斯托克顿,位于美国加利福尼亚州中部,是圣华金县的县治所在,人口约29万(2010年)。老一辈华侨通常称斯托克顿为“三埠”(大埠指旧金山,二
  • 陕西陕西河流列表,列举全部或部分在陕西省境内的河流,并依照流域排列;支流则由河口至源头排序。陕西跨长江、黄河两大流域,外流水系面积约占98%。在流域面积100平方公里及以上的583
  • 越语支越语支(Vietic)是南亚语系的一个分支。此语支曾被称为越芒语支、安南-芒语支及越南-芒语支。“越语支”之名于1992年由Hayes提出,他提议将“越芒语支”进行重新定义,成为越语支
  • 特约编辑特约编辑(Editor-at-Large),亦被称作自由编辑。他们是为出版物撰写文章撰稿人之一。与普通编辑不同的是,特约编辑的工作并不是重复性的,也一般不是由高层所指派的。他们拥有更多
  • 居氏盔鱼居氏盔鱼,为辐鳍鱼纲鲈形目隆头鱼亚目隆头鱼科的其中一种,分布于印度洋区,从红海、东非至斯里兰卡、安达曼海海域,栖息深度4-46米,体长可达38公分,栖息在沙石混合的珊瑚礁海域,属肉