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. 如果有多个节点生成的随机都是一样的情况下,比较谁的票数最多,谁就是领导。

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

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

相关文章
|
开发工具
禅道----产品经理创建产品模块
禅道----产品经理创建产品模块
1013 0
禅道----产品经理创建产品模块
|
存储 JSON NoSQL
Centos7下安装MongoDB
Centos7下安装MongoDB
599 0
Centos7下安装MongoDB
|
弹性计算 安全 Java
使用 OSS 的 bucket 进行文件上传下载|学习笔记
快速学习使用 OSS 的 bucket 进行文件上传下载
1596 0
|
前端开发 JavaScript Java
利用 GitHub 统计分析编程语言发展趋势
利用 GitHub 统计分析编程语言发展趋势
838 0
利用 GitHub 统计分析编程语言发展趋势
|
敏捷开发 监控 数据可视化
2024年敏捷项目管理工具使用排行榜:哪些工具适合大型团队?
随着敏捷方法的普及,2024年的敏捷项目管理工具市场更加多样化,从团队协作到任务追踪,功能日益丰富。本文将评测六款热门工具:板栗看板、Wrike、Smartsheet、TeamGantt、Targetprocess和Airtable,分析其功能亮点、适用行业及优缺点,助力企业选择最适合的工具。
2024年敏捷项目管理工具使用排行榜:哪些工具适合大型团队?
|
存储 C语言
【数据结构】顺序表(c语言实现)(附源码)
本文介绍了线性表和顺序表的基本概念及其实现。线性表是一种有限序列,常见的线性表有顺序表、链表、栈、队列等。顺序表是一种基于连续内存地址存储数据的数据结构,其底层逻辑是数组。文章详细讲解了静态顺序表和动态顺序表的区别,并重点介绍了动态顺序表的实现,包括初始化、销毁、打印、增删查改等操作。最后,文章总结了顺序表的时间复杂度和局限性,并预告了后续关于链表的内容。
402 3
|
监控 安全 物联网
智能家居安全:物联网时代的挑战与应对策略
在万物互联的今天,智能家居带给我们便利的同时,也带来了前所未有的安全挑战。本文将深入探讨智能家居系统面临的主要安全风险,包括数据泄露、设备劫持等,并分析其背后的技术原因。同时,文章将提出一系列针对性的安全措施,旨在帮助用户和厂商共同构建一个更加安全的智能家居环境。通过具体案例分析,我们将看到安全措施实施的重要性及其对智能家居生态的积极影响。最后,本文将对智能家居安全的未来趋势进行展望,鼓励读者思考如何在享受科技便利的同时,保护个人隐私和数据安全。
455 29
|
网络协议 Java Linux
|
Rust 前端开发 JavaScript
探索前端技术的未来:WebAssembly与JavaScript的融合之路
【2月更文挑战第12天】 随着Web技术的不断进步,前端开发正迎来一场革命性变革。本文将深入探讨WebAssembly(以下简称Wasm)与JavaScript(以下简称JS)的结合如何为前端开发带来前所未有的性能提升与新的编程模式。我们将从两者的基本概念入手,探索它们各自的优势与局限,然后深入分析Wasm和JS协同工作时能够解锁的潜力,最后展望这一技术趋势如何塑造未来的前端开发生态。本文旨在为前端开发者提供洞见,帮助他们理解并准备好迎接这一即将到来的技术浪潮。
242 1
|
数据安全/隐私保护 网络架构
计算机网络实验(华为eNSP模拟器)——第七章 远程终端协议(远程登陆)
计算机网络实验(华为eNSP模拟器)——第七章 远程终端协议(远程登陆)
计算机网络实验(华为eNSP模拟器)——第七章 远程终端协议(远程登陆)