二阶段提交

✍ dations ◷ 2025-12-03 01:25:00 #分布式计算,数据管理,计算机科学

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

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

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

.

相关

  • γ链CSF2RB是以下I型细胞因子受体(英语:type I cytokine receptor)的共用亚基:
  • 海地克里奥尔语海地克里奥尔语(海地克里奥尔语:Kreyòl ayisyen,.mw-parser-output .IPA{font-family:"Charis SIL","Doulos SIL","Linux Libertine","Segoe UI","Lucida Sans Unicode","Code
  • 横滨市立大学横滨市立大学(英语:Yokohama City University,简称横市、市大和滨大)是日本的一所于1949年设立的公立大学。总校区位于神奈川县横滨市金泽区濑户。横滨市立大学的是源自于1882年
  • 参数估计估计理论是统计学和信号处理中的一个分支,主要是通过测量或经验数据来估计概率分布参数的数值。这些参数描述了实质情况或实际对象,它们能够回答估计函数提出的问题。例如,估计
  • 欺凌欺凌(英语:Bullying)又称霸凌,指的是带有恶意、情绪的评论、言语或行为,无论时间长短,恶意多还是少,这就是欺凌,从事欺凌的行为就是一般所谓的欺负他人。不论场所、形式、针对的对象
  • 茅根茅根(学名:Perotis indica)为禾本科茅根属下的一个种。
  • CBS新闻广播CBS新闻广播(英语:CBS News Radio),曾用名“CBS广播新闻台(CBS Radio News)”及“CBS电台联播网(CBS Radio Network)”,是美国一家向本国超过1000个电台提供新闻节目的联播网。该联播
  • 卡菲利卡菲利(英语:Caerphilly)是英国威尔士南部的一个自治市,成立于1996年4月1日,面积共278平方公里,人口为178,800人,首府为亨戈伊德(英语:Hengoed),最大的城市为卡菲利镇。卡菲利自治市官
  • 胶莱河胶莱河是中国山东省境内的一条河流,流经昌邑市、莱州市、高密市、诸城市、平度市、胶州市诸县市。胶莱河干流总长约130千米,流域面积5478.6平方千米。胶莱河在平度市万家镇姚
  • 福满都督福满(满语:ᡩᡠᡩᡠ ᡶᡠᠮᠠᠨ,转写:),爱新觉罗氏,明朝建州左卫人。觉昌安的父亲,塔克世的祖父,努尔哈赤的曾祖父。明万历二十六年,努尔哈齐在赫图阿拉城西北的桥山山麓择定了濒