二阶段提交

✍ dations ◷ 2025-07-25 03:16:25 #分布式计算,数据管理,计算机科学

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

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

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

.

相关

  • 底波拉底波拉(希伯来语:.mw-parser-output .script-hebrew,.mw-parser-output .script-Hebr{font-size:1.15em;font-family:"Ezra SIL","Ezra SIL SR","Keter Aram Tsova","Taamey A
  • 罗曼语族罗马语族(又称罗曼语族、拉丁语族),属于印欧语系,是从意大利语族衍生出来的现代语族,主要包括从拉丁语演化而来的现代诸语言。操罗马语族语言的人主要包括传统意义上的“欧洲拉丁
  • 铯-137铯-137(英语:Caesium-137,符号为Cs-137),是铯元素的一个放射性同位素,是一种主要由核裂变产生的核裂产物。铯-137的半衰期为30.17年。 大约95%通过贝塔衰变为barium-137m1 (137m1B
  • 触媒催化剂又称触媒,是能透过提供另一活化能较低的反应途径而加快化学反应速率,而本身的质量、组成和化学性质在参加化学反应前后保持不变的物质。例如二氧化锰可以作为过氧化氢(双
  • 食浮游生物动物食浮游生物动物(英语:planktivore)为以浮游生物为食的水生生物,包括浮游动物与浮游植物。浮游植物为可行光合作用的单细胞植物,通常栖息于海洋的表层以利吸收阳光。浮游植物负责
  • 刘安道家系列条目刘安(前179年-前122年),西汉沛郡丰(今江苏省徐州市丰县)人,刘邦之孙,刘长之子,淮南王,都寿春,现留名著《淮南子》,是古代科学思想的总合代表著作。刘安在中国文学史上有重要
  • 叙利亚及黎巴嫩澳大利亚 英国维希法国叙利亚-黎巴嫩战场(也被称为出口商行动)是第二次世界大战中,盟军为了攻占维希法国控制的叙利亚与黎巴嫩的一场战役,时间为1941年6月至7月。当这场战役正
  • 朝鲜民主主义人民共和国行政区划 朝鲜民主主义人民共和国主题朝鲜民主主义人民共和国的实际控制区现分9个道、1个直辖市、3特别市和3个特区。朝鲜行政体系的基本构造为直辖市、道 - 特别市、市 - 郡、区域
  • 蓬莱韦克奶酪蓬莱韦克干酪(Pont-l'Évêque)产自法国的诺曼底卡尔瓦多斯省的蓬莱韦克。蓬莱韦克干酪有着淡棕黄色的外壳,因成熟过程中经常以盐水洗刷外壳,令外壳留有阵阵的辛辣味,浓郁非常,干
  • 1-萘甲酸1-萘甲酸是一种有机化合物,化学式为C10H7CO2H。它是C-H键活化反应的常见底物。它可以由1-溴萘的格氏试剂的羧基化反应或1-甲基萘的氧化反应制得。