二阶段提交

✍ dations ◷ 2025-12-10 23:04:34 #分布式计算,数据管理,计算机科学

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

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

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

.

相关

  • 医学征象医学征象(英语:Medical sign),(卫生福利部编码指引翻译为:征候),又称体征、病征,医学术语,指在进行身体检查或病理检查时,能够提供医生对医疗进展及疾病状况的迹象及指标,通常是可客观
  • 多潘立酮多潘立酮(Domperidone),商品名为吗丁啉(Motilium),是一种口服和静脉注射用的抗多巴胺类药物,一般用以抑制恶心和呕吐,有时也用于促进乳汁分泌。多潘立酮的抗催吐作用主要是由于其对
  • 布朗芬布伦纳尤里·布朗芬布伦纳(英语:Urie Bronfenbrenner,1917年4月29日-2005年9月25日)美国著名的心理学家, 他的生态系统理论为人所熟悉。 他也是Head Start项目的创始人之一,这个项目研究
  • 轮形动物门见内文轮形动物门(学名:Rotifera),又称轮虫动物门,是动物界的一个门。是主要生活在淡水中的小型动物,约有1800种左右。轮形动物在假体腔动物中是相当繁盛的一类。身体短圆,有明亮的
  • 基因毒性基因毒性(英语:Genotoxicity)是指会破坏细胞内遗传物质完整性的性质。如六价铬、苯、芳香胺都是具有基因毒性的化合物。游离辐射也具有基因毒性。基因毒性的物质由于会造成基因
  • 梁赞州梁赞州(俄语:Рязанская область,罗马化:Ryazanskaya oblast)是俄罗斯联邦主体之一,属中央联邦管区。面积39,600平方公里,人口1,227,910(2002年)。首府梁赞,在俄罗斯首
  • 振安区振安区是辽宁省丹东市下辖的一个市辖区。面积659.73平方千米,人口17.38万。邮政编码118001。区人民政府驻珍珠街250号。下辖4个街道办事处、5个镇:
  • 朱仙镇木版年画朱仙镇木版年画,是河南省开封县朱仙镇所生产的木版年画,源于唐,兴于宋,是中国木版年画最古老的一种。中国现在著名的天津杨柳青年画、河北省武强年画、苏州桃花坞年画、山东省淄
  • 西班牙语正字法 (1741年)西班牙语正字法(1741年版,Orthographía española)于1741年由西班牙皇家学院 (RAE)发布,这是该机构第一次专门发布关于西班牙语的正字法。全书计衬页背面、题词、勘误表及正文
  • 减负减负是中国大陆的教育部门提出的口号,目的在于减轻应试教育制度下学生的负担。但在实践中,这一口号并无多大作用。实际上,学生在放学后,或在假期时,仍然有很大的负担,例如即使是“