二阶段提交

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

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

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

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

.

相关

  • 卤米松卤米松是一种皮质类固醇,可用于治疗银屑病以及非感染性急性湿疹皮炎类皮肤病。
  • 协奏曲协奏曲(concerto),指一件或数件独奏乐器和乐队协同演奏,既有对比又相互交融的作品。由单一乐器为主、管弦乐团为辅的协奏乐曲,充分展现了独奏乐器的特色,又不失合奏的壮丽。用一件
  • 德意志德意志裔人(德语:Volksdeutsche),指的是在一次大战后居住在德意志(德国、奥地利)国外——母语以德语为主的多数聚居区,或与德国或奥地利有血缘关系的欧洲居民。例如:位于法国的阿尔
  • 罗安达坐标:8°50′18″S 13°14′04″E / 8.83833°S 13.23444°E / -8.83833; 13.23444罗安达(葡萄牙语:Luanda,原称:São Paulo da Assunção de Loanda)或译卢安达,位于安哥拉西部大
  • 弗劳恩霍夫协会夫琅和费应用研究促进协会(德语:Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e. V.)是德国也是欧洲最大的应用科学研究机构,成立于1949年3月26日,以德国
  • 微型游戏机微型游戏机是电子游戏机的一类。许多被称为微型游戏机设备使用专门设计的廉价安卓系统,这些系统为连接电视机以及从Google Play等应用商店下载电子游戏而设计。2010年,云游戏
  • 万华夜市坐标:25°02′19″N 121°29′55″E / 25.0385873°N 121.4985012°E / 25.0385873; 121.4985012艋舺夜市位于中华民国台北市万华区广州街,或称为万华夜市,范围包括广州街、梧
  • 罗慕路斯罗慕路斯(Romulus,约前771年出生,约前717年7月5日逝世)与雷穆斯(Remus,约前771年出生,约前753年4月21日逝世)是罗马神话中罗马市的奠基人。在罗马神话中他们是一对双生子。他们的母
  • 钻石系列运载火箭钻石号系列运载火箭(法语:Diamant 意为钻石),为法国第一个完全自行研制的火箭,是一不可重复使用的卫星发射系统且不由美国或苏联协助建造,钻石号系列运载火箭为其后的欧罗巴运载火
  • 2020年爱沙尼亚足球甲级联赛2020年爱沙尼亚足球甲级联赛是第三十届爱沙尼亚顶级足球联赛。2020年爱沙尼亚足球甲级联赛参赛队伍共有10支。