二阶段提交

✍ dations ◷ 2025-12-08 03:54:04 #分布式计算,数据管理,计算机科学

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

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

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

.

相关

  • 古西伯利亚语言古西伯利亚语言(Paleosiberian languages、Paleosiberian),或古亚细亚语言(Paleoasian languages、Palaeo-Asiatic),并不是一种语言,也不是一个正式的语系,而是语言学家用来指涉某些
  • 尖团合流尖团音是指存在于汉语中的两组对立的声母。在官话里、(漢語拼音:i, ü)前的声母、、(拼音:z, c, s)称为尖音,声母、、(拼音:j, q, x)称为团音。民国成立不久后于1913年建立的国语规范
  • G蛋白G蛋白(英语:G Protein)是指鸟苷酸结合蛋白(guanine nucleotide-binding proteins)。它含有一个鸟苷酸结合结构域,由α、β、γ三个亚基组成。激活状态下的G蛋白可以激活腺苷酸环化
  • 2-甲基-1-戊醇2-甲基-1-戊醇(英语:2-Methyl-1-pentanol,IUPAC名:2-methylpentan-1-ol)是一种伯醇类的有机化合物,可作为溶剂和生产其它化学品的中间产物
  • 德布灵德布灵(Döbling德语发音:.mw-parser-output .IPA{font-family:"Charis SIL","Doulos SIL","Linux Libertine","Segoe UI","Lucida Sans Unicode","Code2000","Gentium","Gent
  • Discovery探索频道(英语:Discovery Channel)是由探索传播于1985年在美国创立的。探索频道主要播放流行科学、科技、历史、考古及自然纪录片。探索频道在世界主要国家地区均有落地,但探索
  • 金坦波金坦波(英语:Kintampo)为加纳布朗阿哈福地区的城镇以及旅游景点,位在加纳中央。该镇于2004年成为北金坦波自治市政区的首府。金坦波人口有49,046人。该城镇曾是金坦波县的首府。
  • Bernanke, Ben S.本·沙洛姆·伯南克(英语:Ben Shalom Bernanke,/bərˈnæŋki/ bər-NANG-kee,1953年12月13日-),美国犹太裔经济学家,曾任美国联邦储备委员会主席。2015年4月,伯南克取得全球最大固
  • 丁令威丁令威,道教崇奉的古代仙人。西汉时期辽东人鹤野人,原是一位州官,为政廉洁,爱民如子,两袖清风。为官之余,他的最大乐趣就是养鹤。传说曾学道于灵墟山,后驾鹤升仙。丁令威成仙传说载
  • 年份列表这个页面索引年相关页面。