网络断开后,raft follower如何重新加入?

2024-04-12

我在木筏上遇到了问题。

在论文《寻找一种可理解的共识算法(扩展版)》中写道:

要开始选举,追随者会增加其当前的 任期并过渡到候选状态。 (第 5.2 节)

它还说:

AppendEntries RPC 和 RequestVot RPC 中的接收者应为“Reply false if args.term

所以,让我们想象一下这个场景,raft系统中有5台机器,现在机器0是leader,机器1到4是follower,现在是term 1。突然,机器1断开网络,然后机器1超时,并且它开始领导者选举,它发送RequestVot RPC,肯定会失败(网络断开)。然后它将开始新的领导者选举......等等。机器1的项是增加了很多倍。也许增加到10。当机器1'Term增加到10时,它连接了网络。领导者(机器0)向机器1发送心跳,机器1将拒绝该心跳(机器0的期限小于机器1),现在机器1将无法重新加入系统。


这里要记住的重要一点是,当一个节点收到一个更大的术语时,它会always更新其本地术语。因此,由于机器 1 将拒绝领导者的请求,领导者最终将了解更高的任期 (10) 并下台,然后将选举一个任期 >10 的新节点。

显然,这是低效的,但这就是为什么大多数现实世界的实现使用所谓的“预投票”协议,检查以确保节点can在转变为候选人角色并增加任期之前赢得选举。

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

网络断开后,raft follower如何重新加入? 的相关文章

  • 如何使用 C 在 MPI 中发送(MPI_Send)具有指针字段的嵌套结构

    我有一个结构 struct vertex double a double b struct polygon int numofVertex vertex v 如何使用 MPI Send 在 MPI 中发送此嵌套结构 问题是该结构包含指针字段
  • 使用 Chapel 处理海量矩阵

    我最近偶然发现了 Chapel 我非常想尝试一下 我有一个双重问题 希望它能解决 我通常使用 Python 或 C 工作 当Java陷入困境时 我有两个矩阵I and V 两者都很稀疏 尺寸约为 600K x 600K 密度约为 1 首先
  • 集群共享缓存[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我正在寻找一个 java 框架 它允许我在多个 JVM 之间共享缓存 我需要的是类似的东西榛卡斯特 http www hazelcast
  • 不同主机上的 OpenMP 程序

    我想知道是否可以在多个主机上运行 OpenMP 程序 到目前为止 我只听说过可以在多线程上执行但都在同一台物理计算机上执行的程序 是否可以在两个 或更多 客户端上执行程序 我不想使用 MPI 是的 可以在分布式系统上运行 OpenMP 程序
  • 服务器如何在 RMI 中与客户端建立会话

    我希望有人告诉我在哪里搜索如何在 RMI 中的客户端和服务器之间建立会话 即用于搜索目的的概念的名称是什么 我在 2001 年的书中将其命名为远程会话模式 这个想法是有一个单例 RMI 对象 绑定在注册表中 除了一个login 方法 该方法
  • 坏元素的映射

    我正在实施k means我想创建新的质心 但映射遗漏了一个元素 然而 当K值较小 例如 15 效果会很好 基于此code http www cs berkeley edu rxin ampcamp ecnu machine learning
  • Spark 1.0.2(以及 1.1.0)挂在分区上

    我在 apache Spark 中遇到了一个奇怪的问题 希望得到一些帮助 从 hdfs 读取数据 并进行一些从 json 到对象的转换 后 下一阶段 处理所述对象 在处理 2 个分区 总共 512 个分区 后失败 这种情况发生在大型数据集上
  • Spark 中的总和变坏了

    基于KMeans 的不平衡因子 https stackoverflow com questions 39235576 unbalanced factor of kmeans 我试图计算不平衡因子 但失败了 RDD 的每个元素r2 10是一对
  • 有 BOINC 编程经验吗?

    我被 BOINC 吸引是因为我的一个小项目 我听说过 BOINC 但没有太多了解它的工作原理 主要是因为我现在专注于其他优先事项 我想知道的是 你们中是否有人真正尝试过为 BOINC 编程并让程序在分布式计算机网络上运行 我特别对以下问题感
  • 如何获得CRC64分布式计算(利用其线性特性)?

    我需要对存储在分布式文件系统上的相当大的文件进行哈希处理 我能够以比整个文件更好的性能处理文件的某些部分 因此我希望能够计算各部分的哈希值 然后对其求和 我在想CRC64作为哈希算法 但我不知道如何使用其理论上的 线性函数 属性 以便我可以
  • Apache Spark join 操作的扩展能力较差

    我在 Apache Spark 上运行 join 操作 发现没有弱可扩展性 如果有人能解释这一点 我将不胜感激 我创建两个数据帧 a b 和 a c 并通过第一列连接数据帧 我为 一对一 连接生成数据帧值 另外 我使用相同的分区器来避免随机
  • Spark应用程序状态中的FAILED和ERROR有什么区别

    我正在尝试创建已提交的 Spark 应用程序的状态图 当应用程序被视为失败时 我有点迷失了 各州来自这里 https github com apache spark blob d6dc12ef0146ae409834c78737c11605
  • 基于 paxos 的复制键值存储的领导者选举

    我将使用多个 Paxos 实现一个键值存储 我会有几个节点 其中一个是主节点 该主节点接收更新请求并将值复制到从节点 我的问题是如何选择主节点 或领导者 我还可以使用Paxos算法吗 如果是这样 您认为有必要将paxos实现抽象为一个单元
  • Raft算法:term什么时候会增加?

    Raft将时间划分为任意长度的术语 如图5所示 术语用连续的整数编号 每个任期以一次选举开始 其中一名或多名候选人试图成为领导者 如第 5 2 节所述 如果候选人赢得选举 那么他将在剩余任期内担任领导者 在某些情况下 选举会导致投票分散 在
  • paxos 与 raft 进行领导者选举

    读完paxos和raft paper后 我有以下困惑 paxos论文仅描述了单个日志条目的共识 相当于raft算法中的领导者选举部分 在raft的leader选举中 paxos的方式相对于简单的随机超时方式有什么优势呢 一个常见的误解是原始
  • 如果leader没有死但是无法接收Kafka中的消息会发生什么?单点故障?

    我有 3 个经纪人 3 个分区 每个代理都是一个分区的领导者和所有分区的 ISR 假设我已经在端口上运行了代理19092 29092 39092分别 19092 partition 0 29092 partition 1 39092 par
  • LRPC 的意义何在?为什么有人想要对同一台机器进行远程过程调用?

    根据我对 RPC 远程过程调用 的理解 它们提供了一种向远程计算机发送函数调用 调用等的方法 这样做的明显优点是 您可以拥有一个在机器集群上运行的单个程序 并且可以处理更多请求 更多数据等 但我很困惑LRPC 轻量级RPC http www
  • Javascript分布式计算[关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 为什么没有任何 Javascript 分布式计算框架 项目 这个想法对我来说绝对很棒 因为 客户端就是浏览器 可以使用AJAX进行迭代 网站管理
  • 通过分布式数据库聚合作业优化网络带宽

    我有一个分布式 联合数据库 结构如下 数据库分布在三个地理位置 节点 每个节点集群有多个数据库 关系数据库是 PostgreSQL MySQL Oracle 和 MS SQL Server 的混合体 非关系数据库是 MongoDB 或 Ca
  • Hive - 线程安全的自动递增序列号生成

    我遇到一种情况 需要将记录插入到特定的 Hive 表中 其中一列需要是自动递增的序列号 即在任何时间点都必须严格遵循 max value 1 规则 记录从许多并行的 Hive 作业插入到这个特定的表中 这些作业每天 每周 每月批量运行 现在

随机推荐