二阶段提交

✍ dations ◷ 2025-11-28 01:23:07 #分布式计算,数据管理,计算机科学

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

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

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

.

相关

  • 儿童照顾儿童照顾(Child care)也称为儿童看护、育儿或是托儿,是指照顾一名或多名儿童,儿童年龄一般在是六个月到十三岁之间。一般是指由日托中心、保姆或是其他人照顾儿童的行为或是技能
  • 美服培酮美服培酮 (Mifepristone,又称RU-486),中国大陆译米非司酮,是口服堕胎药,常与米索前列醇并用以终止妊娠。这种配方在妊娠前50天有95%的成功率,在怀孕中期也相当有效 。在施药后两周
  • 莫德里奇保罗·劳伦斯·莫德里奇(英语:Paul Lawrence Modrich,1946年6月13日-),美国化学家,杜克大学生物化学教授,霍华德·休斯医学研究所研究员。2015年,他与托马斯·林达尔、阿齐兹·桑贾尔
  • 相态假设一个系统是由一种物质均匀组成,拥有均匀的物理与化学性质,则称这系统只具有一种相(英语:Phase)。这是一种简单的系统,称为均相系统(英语:homogeneous (chemistry))。更复杂的系统
  • 台湾固网台湾固网股份有限公司,简称台湾固网、台固、TFN,是台湾最大的民营电信固网公司。台湾固网是由台湾大哥大及富邦集团等企业投资成立之固网公司。台湾固网所提供之市内电话,门号
  • 八掌溪八掌溪,位于台湾中南部,属于中央管河川,是台南市与嘉义县的县界溪及嘉义县与嘉义市的县市界溪,全长约有80.86公里,流经嘉义县的义竹乡、布袋镇、鹿草乡、水上乡;嘉义市西区、东区;
  • 池可能指:
  • 第三部门第三部门(英语:The third sector)、或称为志愿部门(Voluntary sector),是社会学与经济学名词,意指在第一部门(英语:public sector)(Public sector,或称为公部门)与第二部门(英语:private se
  • 凝固作用凝血因子是参与血液凝固过程的各种蛋白质组分。它的生理作用是,在血管出血时被激活,和血小板粘连在一起并且补塞血管上的漏口。这个过程称为凝血。它们部分由肝生成。可以为香
  • 封条封条(英语:Seal)在古代又称封识,是商人在货柜物品上贴上一个条状贴纸(相当于物品的身份证),用途是避免货柜在运输途中被人掉包,失窃的风险,持有者大多为:货主(付货人)、航商和海关等三类