二阶段提交

✍ dations ◷ 2025-11-23 17:24:06 #分布式计算,数据管理,计算机科学

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

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

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

.

相关

  • 阿莫西林克拉维酸钾阿莫西林克拉维酸钾是一种用来治疗各种细菌感染的抗细菌药,由阿莫西林和克拉维酸钾合成。分为口服的阿莫西林克拉维酸钾片和静脉注射的干混悬剂。阿莫西林克拉维酸钾是世界卫
  • 塔格糖塔格糖(英语:Tagatose)在分类上属于己糖与酮糖,为D-果糖四号位碳所对应的差向异构体,存在于一些树胶的水解产物中。甜度与蔗糖相似,而产生的热量只为蔗糖的三分之一,因此可作为低热
  • 三糖三糖(英语:Trisaccharide),是由三种单糖组成的碳水化合物,其中有两种糖基键连在一起。1) Lenhinger Principles of Biochemistry by Albert L. Lehninger, David L. Nelson, and
  • 突触突触(法语、英语、德语: Synapse)是神经元之间,或神经元与肌细胞、腺体之间通信的特异性接头。神经元与肌肉细胞之间的突触亦称为神经肌肉接头(neuromuscular junction)。中枢神
  • 奥夫曼朱尔·A·奥夫曼(法语:Jules A. Hoffmann,1941年8月2日-),出生于卢森堡埃希特纳赫,法国生物学家。法国国家科学研究中心管理委员会理事长,2007年成为法国科学院院长。因发现如何激活
  • 多瑙河多瑙河(德文:Donau)是欧洲第二大河,次于俄罗斯的伏尔加河,发源于德国黑森林地区,最后注入黑海,全长2857千米,流域面积81.7万平方千米,平均流量为6500立方米/秒。多瑙河是中东欧极为重
  • 邻乙汞硫基苯酸钠的争议硫柳汞(邻乙汞硫基苯酸钠)是疫苗中含有汞的防腐剂。反疫苗人士(英语:Anti-vaccination)错误的认为疫苗会导致自闭症,而他们认为硫柳汞中含的汞就是原因之一。目前没有科学证据(英语
  • 象鼻虫见内文象鼻虫,也叫象虫、象甲、象甲虫,是鞘翅目中种类最多的一种,更是昆虫中种类最多的一群,全世界已知种类达六万多种,生长过程属于完全变态。此种昆虫的吻突很长,有如大象之象鼻
  • 钢琴师和她的情人《钢琴课》(英语:The Piano)是一部1993年的新西兰剧情片,由简·坎皮恩执导,霍利·亨特、哈维·凯特尔、安娜·派昆及山姆·尼尔等主演。电影以19世纪为背景,描述一名苏格兰哑女子
  • 埃尔帕索艾尔帕索(西班牙语:El Paso)是美国德克萨斯州艾尔帕索县县治,位于德州极西部,隔格兰德河与墨西哥的华雷斯城相望。是该州第六大城、全国第十九大城市 (2006年估计人口为609,415)。