二阶段提交

✍ dations ◷ 2025-11-24 10:51:06 #分布式计算,数据管理,计算机科学

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

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

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

.

相关

  • 加斯帕尔·博安加斯帕尔·博安(法语:Gaspard Bauhin,Caspar Bauhin;拉丁化:Casparus Bauhinus,1560年-1624年),文艺复兴时期欧洲科学家之一。出生于巴塞尔,其父母是法国人,后来,他在巴塞尔大学担任希腊
  • 牛振华牛振华(1956年5月1日-2004年5月11日),中国演员,曾经主演过多部电影、电视剧和小品。牛振华1978年开始从事相声创作及表演,后于1991年调入中国广播艺术团从事舞台相声表演。曾获得
  • 甜味甜味是一种基本的味觉。在全球众多文化中,甜味都象征着美好的感觉;此外,所有的人类文化都偏好甜味的食物,对甜食的偏好,是普世人性。许多化合物是甜的,在生化物质中简单的碳水化合
  • 楠梓坐标:22°44′13″N 120°20′04″E / 22.737050°N 120.334424°E / 22.737050; 120.334424楠梓交流道为国道一号联外楠梓、大社、仁武地区及工业区之重要交流道,指标为356k
  • 1964年 什平德莱鲁夫姆林第三届冬季世界大学生运动会于1964年2月11日至17日在捷克斯洛伐克什平德莱鲁夫姆林举行。这是什平德莱鲁夫姆林首次主办冬季世界大学生运动会。*  主办国家/地区(捷克斯洛
  • 相位阵列相位阵列(英语:phased array),又称相控阵,是由一群天线组成的阵列。送往各个天线的信号的相对相位经过适当调整,最后会强化信号在指定方向的强度,并且压抑其他方向的强度。此技术本
  • 伊西曼格利索湿地公园伊西曼格利索湿地公园(iSimangaliso Wetland Park),又译作艾赛门加利索湿地公园,旧称大圣卢西亚湿地公园(Greater St. Lucia Wetland Park),位于南非夸祖鲁纳塔尔东部海岸,距德班约2
  • 桑钦桑钦(?-?),字君长,东汉洛阳人,学者、地理学家。据传是《水经》一书的作者。北魏郦道元曾为此书作注,即著名的《水经注》。桑钦曾从平陵人涂浑学《毛诗》,并精通《古文尚书》。
  • 射束射束(英语:Beam),是一道粒子或能量的流束,较细的射束(beam)也被称为射线(ray)。
  • 鹿目圆鹿目圆(日语:鹿目 まどか/かなめ まどか  ?),是日本电视动画《魔法少女小圆》的主角。鹿目圆亦在动画电影《剧场版 魔法少女小圆》、若干衍生衍生漫画以及同名衍生商品中登场。