阅读笔记(六)共识算法2PC

情到浓时终转凉″ 提交于 2020-02-01 11:51:44

一. 前言

  本文记录2pc算法的一些论文、博客的精华内容。

二. 共识算法

  根据CAP理论,当网络发生分隔的时候,如果保持高可用性,则会损失一致性;反之亦然。为了实现一致性或者最终一致性,必须要实现分隔后可能不同的数据同步,我们称之为共识算法。共识算法主要应用场景包括:

  1. 决定是否提交操作存入数据库
  2. 同步时钟
  3. 是否同意进入分布式算法下一阶段(常用于复制状态机中)
  4. 选举领导者节点用于更高层的协议处理

  对于一个共识算法,最重要的是以下三个特性:

  1. 达成承诺(Agreement):所有的节点会保持一个相同的值
  2. 有效性(Validity):决定采取的值必须是由某个节点提出的
  3. 终结性(Termination):所有节点均会做出决定

二. 2PC(Two-Phase Commit)

  2PC(Two-Phase Commit), 即二阶段提交,是一种最简单的共识算法,也非常易于理解。主要包括以下两阶段:

  1. 组织者向所有参与者建立连接,并给出一个建议的值并收集他们的回复
  2. 如果所有人同意,则再次和所有参与者沟通并让他们知道。否则告诉所有参与者取消该共识。

  下图所示为二阶段的1,2阶段示意图
在这里插入图片描述

在这里插入图片描述

  考虑到组织者也可能会是出问题的那个节点,因此很多时候我们需要采用哨兵模式,增加一个观察节点,当组织者出问题时代替进行共识算法的通信。

在这里插入图片描述

在这里插入图片描述

四. 参考文献

【1】https://www.the-paper-trail.org/post/2008-11-27-consensus-protocols-two-phase-commit/

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!