二阶段提交

✍ dations ◷ 2025-11-25 00:58:15 #分布式计算,数据管理,计算机科学

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

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

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

.

相关

  • 常染色体体染色体又称常染色体,是指染色体组中除性染色体之外的染色体。例如人类的23对染色体中,有22对是常染色体,余下的一对是X染色体和/或Y染色体组成的性染色体。
  • 性别气质性别表现(英语:Gender expression),包括性别气质,是指特定文化背景下与某种性别相关的人的行为、举止、兴趣和外观方面,特别是与女性表现或男性表现有关的类别。这也包括性别角色
  • 自由党自由党(英语:Libertarian Party),有时译作自由意志党,是一个在1971年成立的美国政党。目前是美国第三大政党,也是美国发展速度最快的政党,拥有超过二十万名注册选民,以及超过六百名
  • 伯醇伯醇,或称“一级醇”,是指羟基直接连接在一个伯碳原子上的醇。它也可以说是含有基团“–CH2OH”的醇。 乙醇、正丙醇、正丁醇都是伯醇。可以在催化剂存在的条件下被氧气氧化成
  • 鲸目 Cetacea鲸下目 (学名:Cetacea)旧称鲸目,是偶蹄目的演化支之一,包含了大约八十多种大型的有胎盘海洋哺乳动物,即鲸鱼﹑海豚和鼠海豚。鲸下目的现存物种可分为两个小目:齿鲸(Odontoceti)及须鲸(My
  • 络合剂配体(ligand,也称为配基、配位基、牙基)是一个化学名词,表示可和中心原子(金属或类金属)产生键结的原子、分子和离子。一般而言,配体在参与键结时至少会提供一个电子。配体扮演路易
  • 雒越雒越又名骆越,最早源自于于越,属百越的一支,分布在中国广东西南部、广西南部,越南北部一带,中心曾经为交趾一带。“雒越”的“骆”有水田之意,他们以农业维生,自战国时代生活在广西
  • 食腐食腐动物是指主要靠进食腐肉维生的动物。如秃鹫、秃鹳、鬣狗、狼獾、豺等。 事实上绝大部分肉食性动物,都会在捕食的同时食腐(如狮子、科莫多龙)。另外亦有以腐木、腐植质维生
  • 壁虎亚目壁虎亚目(Gekkota)是有鳞目的一个亚目,包含所有的壁虎,与缺乏四肢的鳞足蜥。
  • 早坂犀中国犀早坂氏亚种(学名:),又名早坂犀牛、早坂中国犀、台湾犀牛,是已灭绝的独角犀属物种中国犀的亚种,其化石在台南左镇发现。早坂犀牛的发现,可追朔在1930年代当时台北帝国大学地质