二阶段提交

✍ dations ◷ 2025-11-12 19:27:50 #分布式计算,数据管理,计算机科学

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

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

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

.

相关

  • 近接放射治疗近距离治疗(取自希腊语“brachys”一词,意思是“短距离”),也称作内照射放疗、密封源式放射治疗、镭疗法或内部镭疗法,是放射治疗的一种形式,即将放射源放置于需要治疗的部位内部
  • Ausub2/subOsub3/sub三氧化二金(Au2O3),又称氧化金,是不稳定的氧化物,因为金活性非常小,很容易就会被其他活性比它大的元素抢走氧气。三氧化二金是呈红棕色至棕褐色的固体,不溶于水,溶于浓无机酸、冰醋
  • 阿特尔伯勒坐标:52°31′06″N 1°01′09″E / 52.51826°N 1.01916°E / 52.51826; 1.01916阿特尔伯勒(Attleborough)是英国英格兰诺福克郡的一个集镇和民政教区。阿特尔伯勒民政教区的
  • 性腺间质肿瘤性腺间质肿瘤(Sex cord-gonadal stromal tumour)或称性索基质肿瘤、性索间质肿瘤(sex cord-stromal tumour),是一类病发于卵巢或睾丸间质部分的肿瘤,它包含颗粒细胞、卵泡膜细胞(英
  • 学院路坐标:39°59′22″N 116°21′12″E / 39.9894978°N 116.3532213°E / 39.9894978; 116.3532213学院路是北京市海淀区南北向的一条街道,因公路两侧规划了很多大学院校而得名
  • 华盛顿地铁华盛顿都会区捷运系统(英语:Washington Metro),一般简称华盛顿地铁,为美国第二繁忙的城市轨道交通系统,仅次于纽约地铁,于1976年开始营运。服务范围包含华盛顿特区及邻近马里兰州的
  • 增生 (生物学)细胞增生(英语:Hyperplasia),是指由于细胞数量增加(细胞增殖(英语:cell proliferation))而造成组织的体积质量增加,并且有些情况下会导致器官变大。细胞增生有时会与良性的赘生物或是
  • 多兰医学参考工具书多兰(Dorland's)是一个在不同媒体上(包括印刷书籍,光碟和线上内容)的家庭医学参考著作(包括字典,拼写和拼写检查软件)的品牌名称。其旗下产品为《多兰医学插图词典》(目前出版至第
  • 吉森大学吉森大学,全称吉森尤斯图斯-李比希大学(德语:,缩写为),是一所位于德国黑森州吉森的公立大学,1607年由黑森-达姆施塔特伯爵路德维希五世(德语:Ludwig V. (Hessen-Darmstadt))(Ludwig V.)
  • 梅达克बाप तहसील梅达克(Medak),是印度安得拉邦梅达克县的一个城镇。总人口41916(2001年)。该地2001年总人口41916人,其中男性20842人,女性21074人;0—6岁人口5397人,其中男2740人,女