二阶段提交

✍ dations ◷ 2025-04-04 11:13: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)上.

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

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

.

相关

  • 北投温泉坐标:25°08′10″N 121°30′35″E / 25.136163°N 121.509675°E / 25.136163; 121.509675北投温泉位于台湾台北市北投区,依范围大小,有广义及狭义两种说法:地热谷一带开发于1
  • 地中海联盟地中海联盟(法语:Union pour la Méditerranée,但通称为Union méditerranéenne)是由法国总统萨尔科齐主导成立的区域性国际组织,该组织由欧盟成员国和地中海沿岸的非欧盟成员
  • 保鲜膜保鲜膜,是一种塑胶薄膜,作为厨房用品,保鲜膜可阻隔水分,防止空气与食物直接接触,主要用于厨房煮食、盛载食物、保存食物,或用来制作一些可以简单清洁的物料。它的用途越来越广泛,因
  • 药膏外用药物(英语:Topical medication),是医疗上使用于身体表面的药物,例如涂抹于皮肤或黏膜的表面,像是阴道,阴茎,眼睛和耳朵等。外用药物通常要避免接触口部,也不可进食。医疗用的化学
  • 平方微米平方微米(符号为µm²)是面积的公制单位(SI Unit),其定义是“边长为1微米的正方形的面积”。(1cm²=100000000µm²) (1mm²=1000000µm²) (1nm²=0.000001µm²)平方尧米、
  • 釜山航空釜山航空(韩语:에어부산,英语:Air Busan)是韩国的一家低成本航空公司,总部位于韩国釜山的釜山镇区,为韩亚航空的子公司。于2007年9月8日成立,隔年10月27日首航,当时的名称是釜山国际
  • .kr.kr为韩国国家和地区顶级域(ccTLD)的域名。此外也拥有韩文顶级域名.한국。A .ac .ad .ae .af .ag .ai .al .am .ao .aq .ar .as .at .au .aw .ax .az   B .ba .bb .bd .be
  • 考纳斯中左: 雷神之屋,右: 考纳斯市政厅 第三层: 考纳斯水库 下左: 维陶塔斯大帝战争博物馆 下右:考纳斯(立陶宛语:Kaunas)是立陶宛第二大城市和旧都(1922年-1940年)。人口361,274(2005年
  • 大盐池大盐池(Great Salt Pond)是加勒比海岛国圣基茨和尼维斯圣基茨岛的湖泊,也是该国的最大湖泊,位于东南半岛、纳罗斯海峡以北。
  • 移动平均在统计学中,移动平均(英语:moving average)、滚动平均值,又称滑动平均是一种通过创建整个数据集中不同子集的一系列平均数来分析数据点的计算方法。它也是有限脉冲响应滤波器的一