二阶段提交

✍ dations ◷ 2025-04-03 16:45:56 #分布式计算,数据管理,计算机科学

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

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

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

.

相关

  • 突厥语大词典突厥语大词典(阿拉伯语:ديوان لغات الترك‎,Dīwān Luğāt al-Turk)是一部成书于1070年代的以阿拉伯语注释突厥语词汇的词典,由喀喇汗王朝语言学家麻赫穆德·喀
  • 俞汝勤俞汝勤(1935年-) 是一位中国化学家,中国科学院院士,曾任湖南大学校长。1935年出生于湖南长沙,1959年毕业于苏联列宁格勒大学化学系,后担任湖南大学校长。长期从事分析化学基础与
  • 屏东平原屏东平原为台湾之一陷落冲积平原,面积约1,210平方公里,为仅次于嘉南平原之台湾第二大平原。屏东平原位于台湾西南部,属于南台湾地区,行政区属于屏东县一部分。南北长约 60 公里
  • 拐值拐点(Inflection point)或称反曲点,是一条连续曲线改变凹凸性的点,或者等价地说,是使切线穿越曲线的点。决定曲线的拐点有助于理解曲线的外形,这在描绘曲线图形时特别有用。若曲线
  • 洪宪帝制中华帝国,亦称洪宪帝制,是指1915年12月12日至1916年3月22日间,时任中华民国大总统袁世凯在多重因素影响下预备成立的一个君主立宪制政权名称。原定年号洪宪,定1916年为洪宪元年,
  • 电脑病毒电脑病毒(computer virus),或称电子计算机病毒。是一种在人为或非人为的情况下产生的、在用户不知情或未批准下,能自我复制或运行的电脑程序;电脑病毒往往会影响受感染电脑的正常
  • 山地生态山地生态学是生态学的一个分支,研究地球山地和其他高地的生态系统。山地是由众多山所在的地域,有别于单一的山或山脉,山地与丘陵的差别是山地的高度差异比丘陵要大,高原的总高度
  • 水星-宇宙神7号水星-宇宙神7号是美国国家航空航天局进行的水星计划中的一次载人任务,于1962年5月24日在卡纳维拉尔空军基地发射。航天器被命名为曙光7号,三次进入地球轨道,宇航员为斯科特·卡
  • 财政保守主义财政保守主义(Fiscal conservatism)是用来形容主张避免赤字开支(Deficit spending)的保守主义财政政策。财政保守主义者往往支持减少整体政府开支、赤字和国债,以达到最重要的平
  • ViolaWWWViolaWWW是万维网(WWW)第一个流行的浏览器,目前已停止开发。其首次在1991/1992年的UNIX操作系统上发布,并成为受万维网发源组织CERN所推荐的浏览器,但其最常用浏览器的地位最终被M