paxos 与 raft 进行领导者选举

2024-03-19

读完paxos和raft paper后,我有以下困惑: paxos论文仅描述了单个日志条目的共识,相当于raft算法中的领导者选举部分。在raft的leader选举中,paxos的方式相对于简单的随机超时方式有什么优势呢?


一个常见的误解是原始 Paxos 论文没有使用稳定的领导者。在Paxos 变得简单 https://www.microsoft.com/en-us/research/publication/paxos-made-simple/?from=http%3A%2F%2Fresearch.microsoft.com%2Fen-us%2Fum%2Fpeople%2Flamport%2Fpubs%2Fpaxos-simple.pdf在第 6 页标题为“实施”的部分中,Lamport 写道:

该算法选择一个领导者,扮演领导者的角色 杰出的提议者和杰出的学习者。

这可以通过使用准备和承诺的第一阶段消息传递来简单地实现。

然后在第 9 页和第 10 页的“实现状态机”部分下,我们有:

在正常操作中,单个服务器被选举为领导者, 它充当杰出的提议者(唯一试图 问题提案)在共识算法的所有实例中。

这里使用最通用意义上的术语“状态机”,涵盖明显的情况,例如键值存储或数据库服务器,我们在其中复制应用于存储的操作日志。

人们对此感到困惑,因为 Lamport 证明 Paxos 的方式也是现在的教学方式。 Lamport 通过将 Paxos 简化为可以推理的数学模型,证明了它的正确性。他在原始论文中称之为“单一法令会议”兼职议会 https://www.microsoft.com/en-us/research/publication/part-time-parliament/?from=http%3A%2F%2Fresearch.microsoft.com%2Fen-us%2Fum%2Fpeople%2Flamport%2Fpubs%2Flamport-paxos.pdf:

Paxon 宗教领袖要求数学家制定协议 选择主教会议的法令。协议的要求和 与后来议会的假设基本相同 不同之处在于,账本不是包含一系列法令,而是包含 至多有一项法令。由此产生的 Synod 协议是 此处描述;议会协议在第 3 节中描述。

如果您觉得这句话令人困惑,请不要担心,这是一个糟糕的笑话;字面上地。用我自己的话翻译一下是:

“为了证明共识算法的正确性 选择命令流我们首先可以证明其正确性 选择单个命令的数学模型。这 然后可以扩展用于选择单个命令的数学模型 到选择命令流的实用算法(第 3)只要满足单命令数学模型的不变量 不被侵犯。” – simbo1905

为了证明我的解释是正确的,我们可以看一下题为“多重法令议会”的第 3 节,其中写道:

Paxon 议会必须通过一项法令,而不是仅仅通过一项法令 一系列编号的法令。正如在主教会议协议中一样,主席是 当选。任何想要通过法令的人都会通知总统, 谁将为该法令分配一个编号并尝试通过它。 从逻辑上讲,议会协议使用了一个单独的实例 每个法令编号的完整主教会议协议。然而,单个 总统因所有这些情况而被选为总统,他执行了 该协议的前两个步骤只需一次。

为了说明这一点,最初的“The Part-Time Parliment”论文介绍了 Paxos 由于其多级算法而引起计算机科学家的兴趣;议会议定书。该文件和澄清论文“Paxos Made Simple”都将 Paxos 定义为有一个杰出的领导者为命令流分配序列号。此外,尊敬的领导者仅在担任领导职务时才发送“准备”消息;之后,在稳定状态下,尊敬的领导者仅传输“接受”消息。他还在论文的其他地方表示要折叠角色,让所有服务器运行算法的所有三个角色。

当你问“在 raft 的领导者选举中,Paxos 的方法相对于简单的随机超时方法有什么优势?”我不确定你指的是哪种方法?使用 Paxos,您可以随机设置超时并发出“Prepare”消息。 Paxos Made Simple 论文指出,只要您遵循 Paxos 协议来“确保安全”,您就可以自由地使用超时或其他更快的机制:

费舍尔、林奇和帕特森的著名结果1 https://www.microsoft.com/en-us/research/publication/paxos-made-simple/?from=http%3A%2F%2Fresearch.microsoft.com%2Fen-us%2Fum%2Fpeople%2Flamport%2Fpubs%2Fpaxos-simple.pdf暗示 用于选择提议者的可靠算法必须使用 随机性或实时性——例如,通过使用超时。然而, 无论成功或失败,都确保安全 选举。

随机超时非常容易编码并且非常容易理解。但在最糟糕的情况下,它们可能会导致恢复的长期延迟。您不喜欢可以在 Paxos 中使用自己的领导者选举机制。例如this one https://davecturner.github.io/2017/08/17/paxos-pre-voting.html.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

paxos 与 raft 进行领导者选举 的相关文章

  • 深入浅出paxos

    原文 https rebootcat com 2020 12 05 paxos
  • 【Paper】2018_Consensus of leader-following multiagent systems: A distributed event-triggered impulsiv

    Tan X Cao J Li X Consensus of leader following multiagent systems A distributed event triggered impulsive control strate
  • TinyKv Project3 PartB Multi-raft KV

    TinyKv Project3 PartB Multi raft KV 前言Project3 PartB Multi raft KV 文档翻译发送请求LeaderTransfer 禅让ConfChange 集群成员变更Split regio
  • Paxos算法

    Paxos算法 Paxos算法是一系列共识算法中的一个 其目的就是为了解决共识 一致性问题 这个Github连接中详细的列出了多种共识算法 还有一些工程实践的例子 腾讯 Zookeeper Handpoo下的一个分布式框架 Handoop是
  • CAP定理含义

    分布式系统 Distributed System 最大的难点就是各个节点的状态如何同步 CAP定理就是这方面最基本的定理 也是理解分布式的起点 同时也是 NoSql数据库的基石 一 分布式的三个指标 1 Consistency k n s
  • 分布式一致性算法--Paxos

    分布式一致性算法 Paxos 2017 08 31 10 15 0人阅读 评论 0 收藏 编辑 删除 分类 Paxos 1 分布式一致性算法 Paxos Paxos算法是莱斯利 兰伯特 Leslie Lamport 1990年提出的一种基于
  • 一致性算法(paxos、raft)

    背景 分布式 一致性模型 1 弱一致性 最终一致性 1 1 DNS 1 1 Gossip 2 强一致性 2 1 同步 2 1 paxos 2 1 raft multi paxos 2 1 ZAB multi paxos 与raft相似 心跳
  • etcd 集群搭建及常用场景分析

    概述 etcd 是一个分布式一致性k v存储系统 可用于服务注册发现与共享配置 具有以下优点 简单 相比于晦涩难懂的paxos算法 etcd基于相对简单且易实现的raft算法实现一致性 并通过gRPC提供接口调用 安全 支持TLS通信 并可
  • 跨多个微服务的 2PC 分布式事务?

    I read some information about 2 Phase Commit XA distributed transactions and how JTA does support it Seems to be that th
  • 如何监控ZeroMQ服务器是否存在?

    我想在发送 ZeroMQ 请求之前检查服务器的存在 状态 但我不知道该怎么做 Q 我想在发送 ZeroMQ 请求之前检查服务器的存在 状态 解决方案是设置并使用zmq socket monitor Read one event off th
  • 如何将新的 Orderer 组织添加到现有的 Hyperledger Fabric 网络

    我正在尝试向基于 RAFT 的现有订购服务添加一个新的订购者组织 我正在使用first network from fabric samples作为基础网络 在生成加密材料时 我进行了修改 为另外 1 个订购者组织生成加密材料 这crypto
  • 为什么 CAP 定理中 RDBMS 不能容忍分区,但为什么它可用?

    关于 RDBMS 是 CAP 定理中的 CA 我不明白的两点 1 它说RDBMS是not 分区容忍但 RDBMS 怎么样 any less比 MongoDB 或 Cassandra 等其他技术更具有分区容错性 是否有一种 RDBMS 设置可
  • 消息总线和消息队列理解

    我想知道我对消息总线和消息队列工作原理的理解是否正确 首先 我需要明确命名 服务巴士可以与以下互换使用消息总线 这是一种发布者 订阅者类型的系统 其中消息被添加到任意数量的发布者的消息集合中 并且任意数量的订阅者可以从中读取消息 到目前为止
  • 选择用于实现分布式消息传递算法的编程语言

    基本上 我想实现以下算法并分析使用这些算法构建的系统在不同条件下的行为 八卦协议 多个paxos 一致的散列 我的兴趣在于这些算法 我基本上是在寻找一种编程语言 可以让我快速编写这些算法并深入理解这些算法 我应该选择哪种语言 Java Sc
  • PHP 会话很难跨分布式系统扩展吗?

    在工作中 我们几乎用 Java 和 Perl 完成所有工作 但我想使用 PHP 和会话构建一个功能 有些人认为尝试在我们的系统上进行 PHP 会话是一个坏主意 因为它分布到许多服务器 具体问题会是什么 您还可以使用自定义会话保存处理程序 h
  • paxos 与 raft 进行领导者选举

    读完paxos和raft paper后 我有以下困惑 paxos论文仅描述了单个日志条目的共识 相当于raft算法中的领导者选举部分 在raft的leader选举中 paxos的方式相对于简单的随机超时方式有什么优势呢 一个常见的误解是原始
  • 适用于商品 Linux 存储场的最佳分布式文件系统 [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我有很多闲置的英特尔 Linux 服务器 数百台 并且希望将它们用于 Web 托管和文件共享环境中的分布式文件系统 这不适用于 HPC 应用程序
  • 网络断开后,raft follower如何重新加入?

    我在木筏上遇到了问题 在论文 寻找一种可理解的共识算法 扩展版 中写道 要开始选举 追随者会增加其当前的 任期并过渡到候选状态 第 5 2 节 它还说 AppendEntries RPC 和 RequestVot RPC 中的接收者应为 R
  • hadoop map reduce 中的错误处理

    根据文档 有几种方法可以在 MapReduce 中执行错误处理 以下是一些 A 使用枚举的自定义计数器 每个失败记录的增量 b 记录错误并稍后分析 计数器给出失败记录的数量 然而 为了获取失败记录的标识符 可能是其唯一键 以及发生异常的详细
  • Corda 真的需要公证人才能达成唯一性共识吗?

    科达共识简介 https docs corda net releases release V2 0 key concepts consensus html说 唯一性共识是由公证人提供的 我们是说 如果没有公证人 A 有可能说服 B 将一笔交

随机推荐

  • 无法生成 qdoc 文档

    按照本指南操作http doc snapshot qt project org qdoc qdoc guide conf html http doc snapshot qt project org qdoc qdoc guide conf
  • C++比较C字符串的麻烦

    我编写了以下代码 该代码不起作用 但当我更改它时 第二个代码片段将起作用 int main int argc char argv if argv 1 i This is what does not work Do Something 但如果
  • scafford自动生成crud存储库asp.net5

    您好 我正在使用 Visual Studio 2015 我知道我们可以通过添加新的来生成 CRUD 视图控制器和操作scafford物品 但是代码生成不是很有用 似乎所有数据层都依赖于控制器 所以我的问题是 任何使用脚手架的方法都会生成代码
  • 干燥 if 语句

    我有一个 C 程序 在许多不同的 cpp 文件中 我执行如下操作 if thing1 empty thing2 empty if thing1 property lt thing2 property return func1 else if
  • Windows 上 Symfony 5.0.1 控制台中已弃用的类警告

    执行后php bin console make 实体 用户实体 或php bin console make 迁移我在控制台中收到这些警告 2019 12 13T15 49 53 00 00 info User Deprecated The
  • Angular 2 - 组件内的 formControlName

    我想创建一个可以与 FormBuilder API 一起使用的自定义输入组件 我该如何添加formControlName在组件内部 模板
  • 为什么 Lucene QueryParser 需要分析器

    我是 Lucene 的新手 正在尝试将原始字符串解析为Query使用QueryParser 我想知道为什么QueryParser Parse 方法根本需要分析器参数吗 如果分析与查询有关 那么Analyzer处理常规时应指定Query对象以
  • 如何解码字节对象的字符串表示形式?

    我有一个字符串 其中包含编码字节 str1 b Output file xeb xac xb8 xed x95 xad xeb xb6 x84 xec x84 x9d xlsx Created 我想解码它 但我不能 因为它已经变成了一个字符
  • PHP:$var 和 &$var 有什么区别?

    有什么区别 foreach my array as my value And foreach my array as my value 我可以请您举两个现实世界的例子来说明何时使用其中一种以及何时使用另一种吗 第一个示例创建值的副本 而第二
  • 如何在语义保证下使用 React.memo 或 useMemo?

    的文档useMemo says 您可以依赖 useMemo 作为性能优化 而不是作为语义保证 未来 React 可能会选择 忘记 一些 先前记忆的值并在下次渲染时重新计算它们 例如 为屏外组件释放内存 编写你的代码 以便它 没有 useMe
  • 代理 Firebase 函数的跨域状态 cookie 问题

    我使用开发了一个oAuth登录这个例子 https github com firebase functions samples tree master linkedin auth 遇到的第一个问题是如果浏览器中禁用第三方 cookie 现在
  • 如何将 Xml 属性绑定到 Treeview 节点,同时将 XDocument 数据绑定到 WPF Treeview

    我有一个 XML 需要将数据绑定到WPF 树视图 这里 XML 可以有不同的结构 TreeView 应该是数据绑定通用的 足以加载层次结构的任何排列 然而X属性在节点上 称为Title 应该数据绑定到 TreeViewItem 的标题文本
  • 在双屏环境上运行应用程序[重复]

    这个问题在这里已经有答案了 可能的重复 如何在 C 中找到应用程序正在哪个屏幕上运行 https stackoverflow com questions 549751 how do i find what screen the applic
  • 模拟用户脚本中的 Enter 键 tampermonkey [重复]

    这个问题在这里已经有答案了 我正在尝试编写一个用户脚本 在类名 chat input 的输入标记中键入一些内容并按 Enter 键 到目前为止 用户脚本仅键入 Hello 在聊天输入中 但不模拟回车键 知道为什么吗 var msg Hell
  • 将文本和容器置于圆圈内

    我这里有一个 Bootply http www bootply com XLGE6Vpjov http www bootply com XLGE6Vpjov 我需要将 3 个圆圈置于容器中 然后将其中的文本水平和垂直居中 如何使文本垂直居中
  • 获取模型或控制器中消化的 asset_path

    我有一个Article模型 它有一个字段svg path I use fabricjs绘制可以包含多篇文章且可修改的画布 我目前所做的是生成一个json包含文章的所有必需字段 包括svg path 当我尝试使用asset path帮手 ht
  • 如何使用 python boto3 将 s3 对象从一个存储桶复制到另一个存储桶

    我想将文件从一个 s3 存储桶复制到另一个 我收到以下错误 s3 meta client copy 源 目标 类型错误 copy 至少需要 4 个参数 给定 3 个 我无法通过阅读文档找到解决方案 这是我的代码 usr bin env py
  • madvise() 中 MADV_USERFAULT 标志的状态是什么?

    已经有一些讨论在 madvise 中使用新标志来告诉内核不要处理某些内存范围内的页面错误 lwn net 1 https lwn net Articles 615086 lwn net 2 https lwn net Articles 54
  • Google Drive SDK iOS 示例

    我按照Google Drive sdk的iOS示例教程中的步骤进行操作 https developers google com drive ios quickstart https developers google com drive i
  • paxos 与 raft 进行领导者选举

    读完paxos和raft paper后 我有以下困惑 paxos论文仅描述了单个日志条目的共识 相当于raft算法中的领导者选举部分 在raft的leader选举中 paxos的方式相对于简单的随机超时方式有什么优势呢 一个常见的误解是原始