二阶段提交

✍ dations ◷ 2024-09-20 09:02:41 #分布式计算,数据管理,计算机科学

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

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

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

.

相关

  • 品质管制质量控制(英语:quality control,缩写为 QC)是质量管理的一部分,致力于满足质量要求。中国全国科学技术名词审定委员会对质量控制的一种定义为:“为使客户确信某一物品或服务的质量
  • 富山大学富山大学富山大学(とやまだいがく,University of Toyama)位于富山县富山市五福3190番地的日本国立大学。富山大学是在1949年,由富山高等学校、富山师范学校、富山青年师范学校、
  • 土星1号土星1号运载火箭是美国第一枚专门用来将载荷送入地球轨道的运载火箭。美国国家航空航天局共发射了10枚土星1号运载火箭。此后由土星1B号运载火箭所取代。与1号相比1B号拥有
  • 本杰明·富兰克林本杰明·富兰克林 FRS FRSE(英语:Benjamin Franklin,1706年1月17日-1790年4月17日),出生于美国麻省波士顿,美国博学家、开国元勋之一。他是杰出的政治家、外交家、科学家、发明家,同
  • 巴斯克人巴斯克语 - 720,000 其他语言:西班牙语,法语巴斯克人(巴斯克语:euskaldun)是一个居住于西班牙中北部以及法国西南部的民族。巴斯克语的识别语言称为巴斯克语或Euskara语,今天占
  • 贾各路易·里翁贾各路易·里翁(法语:Jacques-Louis Lions,1928年5月3日-2001年5月17日),法国数学家。他在偏微分方程和随机控制等领域做出贡献。
  • 白领犯罪白领犯罪(英语:White-collar crime)指的是以取得钱财(尤其是钜额)为动机之非暴力犯罪。犯罪学理论史上,第一个提出“白领犯罪”概念者,是美国的社会学家暨犯罪学家爱德文·苏哲兰,在
  • 布尔什维克布尔什维克(俄语:большевик),旧译布尔塞维克,在俄语中意为“多数派”,是俄国社会民主工党中的一个派别。布尔什维克派的领袖人物列宁认为,社会民主工党应该建立一个以少数
  • 美国参议院多数党(53)少数党(47) 美国众议院议长:南希·裴洛西(民主党) 多数党领袖(英语:Party leaders of the United States House of Representatives):斯坦利·霍耶(民主党) 少数党领袖(英语:Part
  • 中央省 (伊朗)中央省(波斯语:استان مرکزی)是伊朗三十一个省份之一。面积29,130平方公里,在所有省份中排行第25。人口约1,361,394(2005年数据);首府位于阿拉克市。中央省位于伊朗中部;北