二阶段提交

✍ dations ◷ 2025-09-06 20:25:44 #分布式计算,数据管理,计算机科学

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

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

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

.

相关

  • 传感器传感器(英语:Sensor)是用于侦测环境中所生事件或变化,并将此消息发送出至其他电子设备(如中央处理器)的设备,通常由敏感组件和转换组件组成。传感器是一种物理设备或生物器官,能够探
  • 一氯乙酸一氯乙酸,也称氯乙酸、氯代乙酸,是一个有机羧酸,化学式为ClCH2CO2H。一氯乙酸是有机合成中的重要试剂,为有潜在危险的烷基化试剂。无色或白色易潮解结晶。以α、β、γ三种形式
  • 青椒青椒可以指:
  • 冰碛冰碛(“碛”的注音为 qì/“ㄑㄧˋ”),又称冰碛作用,大致上可分为下列两种情形:形成丘陵或平原。冰积丘陵指任何一种冰川消融之后,在表碛内碛中的碛几乎都沉流到冰川的谷底,和底碛
  • 肉座菌目肉座菌目(学名:Hypocreales)是粪壳菌纲(学名:Sordariomycetes)之下一个真菌的目。根据一份2008年出版的文献,估计本目包含7科、237属、2647物种。这还未包括往后才辨识的其他分类
  • 莲都区莲都区是中国浙江省丽水市下辖唯一的市辖区,地处浙西南腹地、瓯江中游,其少数民族人口绝对数居全省第2位、全市第1位。东汉属松阳县。隋开皇九年(589)析置括苍县。唐大历十四年(7
  • 马殷楚武穆王马殷(852年-930年12月2日),字霸图,许州鄢陵(今河南鄢陵)人,五代十国时期南楚开国君王。马殷早年家贫,以木匠为业,后投入秦宗权军中,属孙儒部下,随孙儒渡淮攻下广陵(今江苏扬州东
  • 高锰酸在化学中,高锰酸 HMnO4 (英语:Permanganic acid),是一种无机酸,是七氧化二锰(化学式:Mn2O7)与水反应的产物,是一种一元酸,有强氧化性。高锰酸是强电解质,可以解离出高锰酸根离子和氢离子
  • 巧言虫绿巧言虫(学名:)是叶须虫目叶须虫科巧言虫属之下的一个物种,主要分布于欧洲的挪威、英国及爱尔兰,在中国分布于山东半岛、辽东半岛、黄海、东海、南中国海,还有白海、新西伯利亚群
  • 300 (消歧义)300是一个自然数,亦可以代表:在媒体中:在机械中:在游戏中: