一. 前言

  本文记录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/

阅读笔记(六)共识算法2PC相关推荐

  1. 论文阅读笔记 | 目标检测算法——SAPD算法

    如有错误,恳请指出. 文章目录 1. Introduction 2. Soft Anchor-Point Detector 2.1 Detection Formulation with Anchor ...

  2. 论文阅读笔记 | 目标检测算法——FSAF算法

    如有错误,恳请指出 文章目录 1. Introduction 2. FSAF Module 2.1 Network Architecture 2.2 Ground-truth and Loss 2.2 ...

  3. 论文阅读笔记 | 目标检测算法——PP-YOLOv2

    如有错误,恳请指出. 文章目录 1. Introduction 2. Revisit PP-YOLO 2.1 Pre-Processing 2.2 Baseline Model 2.3 Trainin ...

  4. wrappers.php,PHP源码阅读笔记六:stream_get_wrappers函数

    PHP源码阅读笔记stream_get_wrappers函数 stream_get_wrappers (PHP 5) stream_get_wrappers - 返回注册的数据流列表 Descript ...

  5. SLAM综述阅读笔记六:基于图像语义的SLAM调研:移动机器人自主导航面向应用的解决方案 2020

    转自[[论文阅读]A survey of image semantics-based visual simultaneous localization and mapping 语义视觉SLAM综述 - ...

  6. 论文阅读笔记 | 目标检测算法——Libra R-CNN算法

    如有错误,恳请指出. 文章目录 1. Introduction 1.1 Sample level imbalance 1.2 Feature level imbalance 1.3 Objective ...

  7. 分布式系统设计之共识算法—2PC、3PC、 Paxos

    分布式共识协议有什么作用? 共识问题分布式计算中最基本的概念之一,是让分布式系统中的一组节点就某事达成一致的问题的一个价值.一个行动方案或一个决定.达成共识允许分布式系统充当单个实体,每个单独的节点都 ...

  8. 论文阅读笔记 | 目标检测算法——YOLOX

    如有错误,恳请指出. 文章目录 1. Introduction 2. YOLOX 2.1 YOLOv3 baseline 2.2 Decoupled head 2.3 Strong data augm ...

  9. 《我的第一本算法书》阅读笔记 6-2 k-means 算法

    1 什么是聚类 1.1 将相似的对象分为一组 聚类就是在输入为多个数据时,将"相似"的数据分为一组的操作.1 个组就叫作 1 个 "簇".下面的示例中每个点都代 ...

最新文章

  1. python参数之间用什么分割_如何根据python的两个参数在美丽的汤中分割
  2. GridView绑定时通过RowDataBound事件获取数据源列值
  3. php设置背景为透明,css如何设置背景颜色透明?css设置背景颜色透明度的两种方法介绍...
  4. GStreamer 的调试工具
  5. webserver之处理HTTP请求
  6. 如何将字符串数组的空格去除_java中如何将数组转换为List
  7. 95-080-048-源码-启动-启动standalonesession
  8. linux中的环境变量作用
  9. 大数据可视化系统开发的作用
  10. 说一下OFO带给我们的启示
  11. 解决maven打包 错误: 程序包com.sun.istack.internal不存在 - BBSMAX
  12. VMware虚拟机nat模式详解
  13. arm体系结构总结笔5-总线接口
  14. 跨域的知识和解决方法
  15. 弘辽科技:如何获取淘宝推广链接?有哪些推广方法?
  16. 坐标系统的详解-gis
  17. 机器视觉之ros人脸识别
  18. 黑苹果cpu支持列表_单卡gpu直通,黑苹果,amd_cpu教程
  19. 计算机网络----标准化工作及相关知识
  20. 光纤跳线接口_光缆、尾纤、跳线、终端盒的作用与接法

热门文章

  1. IntelliJ IDEA配置Maven详解
  2. 计算三角形的周长和面积(海伦公式)
  3. React 中的发布订阅模式
  4. imac关闭窗口图标不见了_Mac图标:50多种免费的高质量iMac,Macbook图标集
  5. 实战!手把手教你实现学成在线网站首页案例【详细源码】
  6. 出差在外,领导的同学请吃饭,问你“去不去”,会来事说3个话术
  7. 关于设计模式五大原则
  8. vscode html文件自动补充html骨架失效
  9. 2007年最新学习资源大全
  10. THREE + d3制作中国地图挤压(extrude)模型