二阶段提交

✍ dations ◷ 2025-11-05 18:38:03 #分布式计算,数据管理,计算机科学

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

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

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

.

相关

  • 小角软骨小角软骨(corniculate cartilages、cartilages of Santorini (圣托里尼软骨)、小角状软骨、角质软骨)是由弹性软骨组成的两个小锥形结节,其与杓状软骨的顶端相关联、并于后方和
  • 艾克曼克里斯蒂安·艾克曼(Christiaan Eijkman,1858年8月11日-1930年11月5日),荷兰医生、病理学家。艾克曼研究并显示出脚气病是由于不良的饮食习惯造成,这导致他发现维生素。他与弗雷德
  • 扁盘动物黏丝盘虫(Trichoplax adhaerens)是1883年由德国生物学家Franz Eilhard Schulze (1840-1921)在奥地利Graz大学的水族馆发现的。目前在扁盘动物门中仅确认此一种,一般称丝盘虫即
  • 二氢尿苷二氢尿苷(英语:Dihydrouridine,或称为5,6-二氢尿嘧啶核苷,缩写D、DHU、UH2)是一种嘧啶类核苷,由核碱基5,6-二氢尿嘧啶与核糖通过C-N糖苷键连结而成,比常见的尿苷多了两个氢原子,使其
  • V20A·B·C·D·G·H·QI·J·L·M·N·P·R·S·VATC代码V20(外科敷料)是解剖学治疗学及化学分类系统的一个药物分组,这是由世界卫生组织药物统计方法整合中心(The WHO Collaborat
  • 黑乃奈奈绘黑乃奈奈绘(1980年6月18日-),日本栃木县出生的漫画家。血型A型。日本《作新学院高等学校》美术设计科毕业。线条明快熟练,除了被称为耽美画风的表现之外,不论是男女老幼都能熟练的
  • 德国国防军德国国防军(德语:Wehrmacht)是1935年至1945年间纳粹德国的军事力量,军种包括陆军、海军和空军,纳粹党的武装党卫队单位有时也从属于国防军。德国防军与纳粹党卫军兵数比例约国7党
  • 阿蒂西亚阿蒂西亚(英文:Artesia),是美国加利福尼亚州洛杉矶县下属的一座城市。建市于1959年5月29日,面积 大约为1.62平方英里 (4.2平方公里)。根据2010年美国人口普查,该市有人口16,522人
  • 虾仁虾仁是中餐常见的食材,以有弹性且多汁的为佳。因为虾的肠脏常藏有污物,所以注重卫生的食家会要求把虾的泥肠清除。干制的虾仁称又名海米、金勾、开洋、开阳。虾米是海味,晒干的
  • LastPassLastPass是一款Freemium的跨平台在线密码管理工具。旨在通过将用户的密码集中在云端以解决密码疲劳(英语:Password fatigue)。LastPass使用Web界面为基础,但还提供使用于许多现