Raft 生成的随机一样如何处理 | 学习笔记

简介: 快速学习 Raft 生成的随机一样如何处理

开发者学堂课程【精通 Spring Cloud AlibabaRaft 生成的随机一样如何处理学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/634/detail/10107


Raft 生成的随机一样如何处理


内容介绍

一、举例

二、随机数有可能一样的情况下如何处理


一、举例

算法是靠谱但可能会存在一些问题:随机数有可能相等

1.  假设有三个节点 nacos 跟随者超时时间为100msnacos 跟随者超时时间为100msnacos 跟随者超时时间为200ms

此时,有两个相等的随机数,第一个和第二个节点会同时醒来,而投票者只有一个,只能随机投一个。这种情况实际上是不可能的。

2.  如果三个 nacos 超时时间都一样,当前投票全部作废,重新进入随机生成超时时间。出现这种情况概率很小。

3.  如果有四个 nacos,分别为两个 nacos 跟随者超时时间100ms、两个 nacos 跟随者超时时间150ms,这种情况两个超时时间为100ms 的最先醒来,两个超时时间为150ms 的节点,各投票一个100ms 的节点,这时候就出现 bug了,相当于都11,这种情况也全部作废,相当于两个竞选者投票数相同时,这种情况作废。问题产生原因为节点数为偶数。

不建议做成偶数,有可能会死循环的,只要一直没有选举出来 leader,就会不断循环,这种情况还是很常见的。


二、如果随机数有可能一样的情况下如何处理

1. 如果所有的节点的超时随机数都是一样的情况下,当前投票全部作废,重新进入随机生成超时时间。

2. 如果有多个节点生成的随机都是一样的情况下,比较谁的票数最多,谁就是领导。

如果票数完全一样的情况,直接作废,重新进入随机生成超时时间。

建议集群节点为奇数(偶数情况下可能会死循环)

相关文章
|
1月前
|
图形学
计算机辅助设计的基本原理与应用 - 副本
计算机辅助设计的基本原理与应用 - 副本
|
存储 缓存 算法
ES写入过程和写入原理调优及如何保证数据的写一致性(上)
ES写入过程和写入原理调优及如何保证数据的写一致性
ES写入过程和写入原理调优及如何保证数据的写一致性(上)
|
SQL 存储 缓存
ChangeStreams使用及原理
作者 | 陈星(烛昭)
ChangeStreams使用及原理
|
3月前
|
缓存 网络协议 算法
Golang简单实现 分布式缓存+一致性哈希+节点再平衡(gossip + consistent + rebalance)
Golang简单实现 分布式缓存+一致性哈希+节点再平衡(gossip + consistent + rebalance)
64 0
|
4月前
|
消息中间件 运维 Kafka
深度解析 Kafka 消息保证机制
Kafka作为分布式流处理平台的重要组成部分,其消息保证机制是保障数据可靠性、一致性和顺序性的核心。在本文中,将深入探讨Kafka的消息保证机制,并通过丰富的示例代码展示其在实际应用中的强大功能。
|
9月前
|
算法
raft共识算法动态演示
raft共识算法动态演示
52 0
|
11月前
|
算法 索引
共识算法之Raft算法模拟数
共识算法之Raft算法模拟数
78 0
|
11月前
|
存储 移动开发 运维
无主复制系统(3)-Quorum一致性的局限性
若有n个副本,且配置w和r,使得w + r > n w + r> nw+r>n,期望可以读到一个最新值。因为成功写入的节点集合和读取的节点集合必有重合,这样读取的节点中至少有一个具有最新值,如图-11。
96 0
|
消息中间件 Kafka RocketMQ
Kafka重平衡机制
当集群中有新成员加入,或者某些主题增加了分区之后,消费者是怎么进行重新分配分区再进行消费的?这里就涉及到重平衡(Rebalance)的概念,下面我就给大家讲解一下什么是 Kafka 重平衡机制,我尽量做到图文并茂通俗易懂。
925 0
Kafka重平衡机制
|
消息中间件 RocketMQ 开发者
顺序消息原理|学习笔记
快速学习顺序消息原理
52 0
顺序消息原理|学习笔记