二阶段提交

✍ dations ◷ 2025-12-09 06:43:52 #分布式计算,数据管理,计算机科学

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

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

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

.

相关

  • 希帕提娅希帕提娅(古希腊语:Ὑπατία,生于约350年-370年之间,死于415年3月),又译作海芭夏、海帕西娅,著名的希腊化古埃及新柏拉图主义学者,是当时名重一时、广受欢迎的女性哲学家、数学家
  • 埃纳省埃纳省(法语:Aisne)是法国的第02省,位于上法兰西大区,它因流经的同名河流埃纳河而得名。埃纳省是1790年创建的83个省之一,它由法兰西岛省的一部分(拉昂地区 Laonnois、苏瓦松地区 S
  • 竞速滑冰竞速滑冰在1924年奥运成为正式比赛项目。• = 正式项目, (d) = 表演项目The following table shows when events were contested at each Games. Women's events were demo
  • 探热针医疗温度计,又称体温计、探热针,是拿来量测人体温度用的仪器。可用来量测口腔温度、腋下温度或是肛门内的直肠温度。传统的水银式医疗温度计工作方式与气象用最高温度计相同。
  • 心境在心理学中,心境、心态或心情(英语:mood)是情绪状态。相比情绪、感觉、情感,心境不那么具体、强烈,也不太可能被特定刺激或事件激发或例示。心境通常被描述为具有正效价或负效价。
  • 立方泽米体积(英语:Volume)是物件占有多少空间的量。体积的国际单位制是立方米。一件固体物件的体积是一个数值用以形容该物件在空间所占有的空间。一维空间物件(如线)及二维空间物件(如正
  • 欧文代尔欧文代尔(Irwindale)是美国加利福尼亚州洛杉矶县的一座城市,位于圣盖博谷。2010年美国人口普查显示,欧文代尔共有1,422人,低于2000年人口普查时的1,446人。欧文代尔的居民人数相
  • 地球的地壳元素丰度列表以下是地球地壳中的化学元素丰度的列表,其中包括 5 份不同资料来源得到的结果,此处的丰度以质量百分比的丰度为准。其中的数字是估计值,会随着资料来源及估计方式不同而改变。
  • 霍夫曼氏反射霍夫曼氏反射或霍夫曼氏征象(英语:Hoffmann reflex、Hoffmann sign)是以德国神经学家Johann Hoffmann(英语:Johann Hoffmann (neurologist))(1857年生于莱茵黑森,1919年死于海德堡)命
  • 蒙古贵族蒙古贵族 (蒙古语:.mw-parser-output .font-mong{font-family:"Menk Hawang Tig","Menk Qagan Tig","Menk Garqag Tig","Menk Har_a Tig","Menk Scnin Tig","Oyun Gurban Ulus