二阶段提交

✍ dations ◷ 2025-11-25 08:12:47 #分布式计算,数据管理,计算机科学

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

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

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

.

相关

  • 深静脉血栓深静脉血栓是在深静脉形成的血栓,常形成于下肢或骨盆部位深处的静脉。有时也形成于上肢的静脉(这被称为Paget-Schrötter综合症(英语:Paget–Schroetter disease))。近期接受外科
  • 布匹织物(英语:fabric),俗称布,是由纱线等带有纤维的材料制成的一种织品。可以由棉纱纺成棉布,也可以由人造纤维制成,或者以混合棉纱与人造纤维制成混纺布。布是很多日用品和工业产品的
  • 赫农王希伦二世 (希腊语:Ἱέρων Β΄; 前307年 – 前215年),是西西里的希腊人。伊庇鲁斯联军统帅皮洛士远征西西里迦太基人时,担任他的部将。随着皮洛士离开西西里返国,希伦被叙拉古
  • 九柱神九柱神(希腊语:.mw-parser-output .Polytonic{font-family:"SBL BibLit","SBL Greek","EB Garamond","EB Garamond 12","Foulis Greek",Cardo,"Gentium Plus",Gentium,"Theano
  • 武丁武丁(?-前1192年),子姓,根据《今本竹书纪年》名昭,是中国商朝第23位国君,共在位59年(约前1250年—前1192年在位),“武丁”是他逝世后获得的谥号,殷末又追谥庙号为“高宗”(但在殷墟卜辞中
  • CV-8 大黄蜂号坐标:8°38′23″S 166°42′34″E / 8.63972°S 166.70944°E / -8.63972; 166.70944大黄蜂号航空母舰(英语:USS Hornet,舷号CV-8)是一艘隶属于美国海军的航空母舰,为约克城级航
  • 费米问题在科学中,尤其是在物理和工程教育中,费米问题(Fermi problem)或费米估算是一个用来做量纲分析,估算和清晰地验证一个假设的估算问题。命名自恩里科·费米。这类问题通常涉及对于
  • 麦肯锡麦肯锡公司(英语:McKinsey & Company,简称麦肯锡)为一所由芝加哥大学会计系教授詹姆斯·麦肯锡创立于芝加哥的管理咨询公司,营运重点是为企业或政府的高层干部献策、针对庞杂的经
  • 舾装舣装(英语:outfitting; fitting-out)是船舶制造工艺的一种。船只的主体结构完成以后,即可从造船平台下水,在靠岸的状态下完成锚、桅杆等部件,以及船体结构以外的其他装备和设施的
  • 保送入学《保送入学》()是一部1983年保罗·布里克曼(英语:Paul Brickman)所主导的美国青春喜剧电影,由汤姆·克鲁斯与瑞贝卡·德·莫妮与西恩潘主演。叙术美国有一青年异想天开,竟趁家人外