二阶段提交

✍ dations ◷ 2025-12-03 08:27:04 #分布式计算,数据管理,计算机科学

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

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

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

.

相关

  • 分支人体解剖学 - 人体生理学 组织学 - 胚胎学 人体寄生虫学 - 免疫学 病理学 - 病理生理学 细胞学 - 营养学 流行病学 - 药理学 - 毒理学医学是以诊断、治疗和预防生理和心理
  • bspan style=color:white;克里特岛/span/b克里特岛(希腊语:Κρήτη,转写:Kriti;古希腊语:.mw-parser-output .Polytonic{font-family:"SBL BibLit","SBL Greek","EB Garamond","EB Garamond 12","Foulis Greek",Cardo,"
  • 1972年 普莱西德湖第七届冬季世界大学生运动会于1972年2月26日至3月5日在美国普莱西德湖举行。这是美国首次主办冬季世界大学生运动会。普莱西德湖此前曾主办过1932年冬季奥林匹克运动会,这是
  • 负责人现行《中华人民共和国宪法》第八十六条和《中华人民共和国国务院组织法》第二条规定,中华人民共和国国务院现由下列人员组成:现行《宪法》和《国务院组织法》均未提到中国人民
  • 安妮·弗兰克之家纳粹集中营转移营比利时:布伦东克堡垒 · 梅赫伦转移营法国:居尔集中营 · 德朗西集中营意大利:波尔查诺转移营荷兰:阿默斯福特集中营 · 韦斯特博克转移营挪威:法斯塔德集中营部
  • 清洗清洗可以指:
  • 斯托克斯位移斯托克斯位移(Stokes位移)是相同电子跃迁在吸收光谱和发射光谱中最强波长间的差值(如在荧光光谱、拉曼光谱中)。名称来源于爱尔兰物理学家乔治·加布里埃尔·斯托克斯。理想情况
  • 薛凤祚薛凤祚(1600年-1680年),字仪甫,号寄斋,淄川人(今山东淄博)。征仕郎薛冈之孙子,中书科中书舍人薛近洙之子。明末清初天文学家及数学家,与王锡阐并称“南王北薛”,著有《算学会通正集》十
  • 永陵镇永陵镇是中国辽宁省新宾满族自治县下辖的一个镇,位于县境中部,全镇总面积525.07平方公里,耕地面积5.8万亩,山林面积58万亩,总人口约4.2万,其中农业人口约2.9万,满族人口占75%。永陵
  • 库斯卡坦辛戈库斯卡坦辛戈(西班牙语:Cuscatancingo),是萨尔瓦多的城镇,位于该国中西部,由圣萨尔瓦多省负责管辖,面积5.40平方公里,海拔高度603米,2007年人口66,400,人口密度每平方公里12,296.3人。