二阶段提交

✍ dations ◷ 2025-10-14 20:07:36 #分布式计算,数据管理,计算机科学

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

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

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

.

相关

  • 外生殖器生殖器官是指在复杂生物体上任何与有性繁殖及组成生殖系统有关的组织(严格意义上,不一定都属于器官)。另外有相关的性器官一词,广义地说是指会带来性快感的器官。生殖腺是指产生
  • 长安西安历史长安是世界历史上一座著名都城,是今西安市的古称,外国人称之为胡姆丹(Khumdan)。其地点由于历史原因有过一次迁徙,但大致位于现在关中平原的西安和咸阳附近的渭河南岸。
  • 阿基里斯阿喀琉斯(希腊语:Ἀχιλλεύς,拉丁语:Achilles),也常译作阿基里斯、阿基琉斯等,是古希腊神话和文学中的英雄人物,参与了特洛伊战争,被称为“希腊第一勇士”。他是色萨利国王佩琉
  • 色素沉积皮肤划痕症,又称为人工荨麻疹,是皮肤病的一种,通常患者也有湿疹,属于荨麻疹的一种类型。常见的皮肤划痕症有两种,分别是“单纯性皮肤划痕症”和“症状性皮肤划痕症”。“单纯性
  • 临床文档架构HL7 临床文档架构(Clinical Document Architecture,CDA) 是一项基于XML的标记标准(置标标准),旨在规定用于交换的临床文档的编码、结构和语义。CDA 是第3版 HL7 标准的组成部分。
  • 大坝水坝(英文:Dam)是建筑在溪流、河流和河口的屏障,用来防止洪水泛滥、生产水力发电、储水作饮食或灌溉、工商业之用。在河流中上流建造的短距离人工高耸河堤作用主要功能并非防止
  • 豫章书院豫章书院修身教育专修学校是中国大陆江西省南昌市一间于2013年成立,用以接收管教存在叛逆行为的青少年的学校,其前身是2007年建立的一家名为“龙悔学校”的戒网瘾学校和2011年
  • 针刺麻醉针刺麻醉,简称针麻,指一种实施针刺以达到麻醉的方法。始于1950年代末。1958年上海市第一人民医院公开发表了针刺替代麻醉的研究成果。1965年始,韩济生等人开展了系统研究。1970
  • 辽东征伐辽东征伐是高丽王朝于1388年进攻辽东的事件。辽东征伐的起因是明朝在高丽治下的铁岭地区(朝鲜语:철령)设置铁岭卫。铁岭位于今日朝鲜民主主义人民共和国江原道的高山郡和淮阳郡
  • 1933年大西洋飓风季1933年大西洋飓风季是有纪录以来第二活跃的大西洋飓风季,共计有20场风暴在大西洋西北部形成。其中第一场风暴于1933年5月14日形成,最后一个气旋在同年11月17日消散。6月28日到