【分布式共识】Raft算法 选举一个领导者

news2024/9/24 10:21:01

Raft算法是通过一切以领导者为准的方式,实现一系列值的共识和各节点日志的一致
在分布式系统中,节点可能出现宕机、网络故障等,所以在3个节点的分布式系统中,如何选举出一个Leader节点。比如我们部署一个ZK集群。
在这里插入图片描述

成员

Leader领导者、Follower追随者、候选人(Candidate)每个节点同一时间只会存在一个状态
追随者:接收领导者的消息和心跳检测,如果一定时间没有收到心跳检测就自己跳出来当候选人
候选者:向其他的节点发送消息,通知投票,如果拿到大多数的票,当选为领导者
领导者:处理写请求,管理日志复制和不断发送心跳信息

所以整个过程就是 追随者->

过程

其实整个过程比较简单,raft会随机给每个几点生成一个超时时间。默认所有节点都是追随者。
在这里插入图片描述
因为节点A的超时时间最短。没有获取到leader。所以先发起投票。将自己的任期编号修改为7
在这里插入图片描述
节点A、B。如果在本期任期编号中没有投票那么就投给A。
在这里插入图片描述
当A成功获取半数以上的票,就成为leader。然后和节点B、节点C进行心跳检测。
在这里插入图片描述

选举有哪些规则

  • 一个人在同一编号中只能投一票。
  • 领导者周期性的向所有追随者发送心跳消息,告知领导者存活着。
  • 如果固定时间内,追随者没有收到领导者的心跳,那么追随者就会发起一轮新的自我选举。
  • 一次选举中,票数过半的候选人 晋升为领导者
  • 在一个任期内,除非领导者出现宕机或者网络分区,否则会一直它
  • 在一次选举中,每个服务器节点都只能提出一票,并且是先到先投。
  • 在同一次选举中,如果任期编号相同,日志文件对应的索引号越大,不会给小于自己的投票,直接拒绝。
    在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/908216.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

《Linux运维总结:Centos7.6之OpenSSH7.4p1升级版本至9.4p1》

Centos通过yum升级OpenSSH 在官方支持更新的CentOS版本,如果出现漏洞,都会通过更新版本来修复漏洞。这时候直接使用yum update就可以升级版本。 yum -y update openssh 但是,CentOS更新需要有一段时间,不能在漏洞刚出来的时候就有…

SpringBoot实现热部署/加载

在我们修改完项目代码后希望不用重启服务器就能把项目代码部署到服务器中(也就是说修改完项目代码后不用重启服务器修改后的项目代码就能生效)。 一、实现devtools原理 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-…

内网渗透神器CobaltStrike之凭据的导出与存储(八)

简介 Cobalt Strike 是一个流行的渗透测试工具&#xff0c;主要用于模拟高级持续性威胁&#xff08;APT&#xff09;的攻击。它提供了许多功能来操作、持久化和操纵受害者机器。其中&#xff0c;凭据的导出和存储是渗透测试中的一个重要步骤。 凭据导出: Cobalt Strike 通过其…

Vue前端封装一个任务条的组件进行使用

任务条 样式 代码 父组件 <articleSteps :tabs"tabs" :tabs-active-name"tabsActiveName" /><div class"drawer__footer"><el-button v-if"tabsActiveName 1 || tabsActiveName 2" click"backClick">…

面试了几十家,整理出这份车载测试面试题

年前有朋友找工作&#xff0c;跟我说简历改了车载后&#xff0c;收到的打招呼翻了几倍&#xff0c;如今车载测试前景非常广阔&#xff0c;因为越来越多的汽车厂商正在开发新的可智能化的汽车&#xff0c;他们需要测试这些汽车的性能&#xff0c;安全性以及可靠性。 车载测试技…

面试时,如何向HR解释自己频繁跳槽?

有数据显示&#xff0c;现在的职场人&#xff0c;跳槽越来越频繁&#xff0c;95后平均7个月就离职。 对于面试官来说&#xff0c;一个跳槽过于频繁的人总是存在潜在风险&#xff0c;比如抗压力差、稳定性不好、心不定这山望着那山高、职业规划不清晰等等。 我一直强调一个观点…

WXSS的全局样式和局部样式

什么是WXSS? WXSS中的样式和css差不多&#xff0c;是用于给WXML页面来设置样式的&#xff0c;但是WXSS中扩展了rpx尺寸单位和import样式导入 rpx:根据不同的屏幕自动进行适配&#xff0c;把设备屏幕的宽度等分为750份(设备的总宽度750rpx) import: 用于进行样式的导入 通过inp…

get Error: aborted,net::ERR_INCOMPLETE_CHUNKED_ENCODING 200 (OK) 问题解决

先说结论&#xff1a;由于磁盘空间满导致部分数据接口无法正常反馈结果。 今天前线业务人员忽然说&#xff0c;有个页面刷新后白屏。经过验证确实有这种情况。页面上用开发者工具查看请求和报错信息&#xff0c;发现一个请求所有字典数据的接口没有反馈数据&#xff0c…

无人机精细化巡检方案制定:提高效率与准确性的关键

在当前技术日新月异的时代&#xff0c;无人机在多个领域的应用已成为行业标配。但如何制定出一套有效、细致的无人机巡检方案&#xff0c;确保其最大效能&#xff0c;成为许多组织与公司的核心议题。其中&#xff0c;复亚智能在此领域已展现出了卓越的实力与深入的见解。 1. 精…

【LeetCode-困难题】42. 接雨水

题目 题解一&#xff1a;暴力双重for循环&#xff08;以行计算水量&#xff09; 1.先找出最高的柱子有多高&#xff08;max 3&#xff09; 2.然后第一个for为行数&#xff08;1&#xff0c;2&#xff0c;3&#xff09; 3.第二个for计算每一行的雨水量&#xff08;关键在于去除…

06 mysql all查询 和 主键查询 和 非索引列查询

前言 本文主要调试一下 mysql 的如下两种查询语句 我们也来深入的看一下, 究竟如下两个普通的查询, mysql 做了什么事情 1. select * from user where id 991; 2. select * from user; 3. select * from user where name jerry991; 环境介绍 测试表 user schema 如下…

极限学习机(ELM)的原理和matlab代码实现

单隐含层前馈神经网络(Single - hidden Layer Feedforward Neural Network,SLFN)以其良好的学习能力在许多领域得到了广泛的应用。然而,传统的学习算法(如 BP算法等)固有的一些缺点,成为制约其发展的主要瓶颈。前馈神经网络大多采用梯度下降方法,该方法主要存在以下几个方面的缺…

机器人操作系统【02】:如何在 ROS2 中对点云数据进行建模

一、说明 RViz和Gazebo中RADU的模拟进展顺利。在上一篇文章中&#xff0c;我们学习了如何启动机器人并使用远程节点进行操作。在本文中&#xff0c;我们将添加两个视觉传感器。首先&#xff0c;一个图像摄像机&#xff0c;用于在机器人四处移动时查看机器人的实时馈送。其次&am…

Nginx高可用集群

目录 一.简介二.案例1.实现思路2.配置文件修改3.实现效果故障转移机制 一.简介 以提高应用系统的可靠性&#xff0c;尽可能地减少中断时间为目标&#xff0c;确保服务的连续性&#xff0c;达到高可用的容错效果。例如“故障切换”、“双机热备”、“多机热备”等都属于高可用集…

03:TIM定时器

目录 一:TIM 1:介绍 2:定时器的分类 3:基本定时器 4:通用定时器 5:高级定时器 6:定时器的基本结构 二:定时中断功能 A:定时器定时器中断 1:连接图 ​编辑 2:步骤 3:函数介绍 4:代码 三:外部时钟功能 A:定时器外部时钟 1:连接图 2:函数介绍 3:外部时钟代码 一…

【FreeRTOS】【应用篇】任务创建

前言 从本篇开始&#xff0c;将不再太过于关心 FreeRTOS 的内核细节&#xff0c;把重心转移到对 FreeRTOS 的应用上来。 本篇代码大部分参考野火的 FreeRTOS 教程。 一、静态任务和动态任务创建的区别 1. 概念解析 在 FreeRTOS 中&#xff0c;我们可以选择两个不同的函数进…

微信小程序,封装身高体重选择器组件

wxml代码&#xff1a; // 微信小程序的插值语法不支持直接使用Math <wxs src"./ruler.wxs" module"math"></wxs> <view class"ruler-container"><scroll-view scroll-left"{{scrollLeft}}" enhanced"{{tru…

探索软件项目管理的本质及概念

什么是软件项目管理&#xff1f; 软件项目管理是指对软件项目从规划、组织、指挥、控制到最终交付的全过程进行有效管理的一种方法。它通过合理的资源分配、有效的沟通和高效的协作&#xff0c;确保软件项目能够按照预定的目标、时间和质量要求完成。在现代信息技术逐渐普及和…

互联网企业内部FAQ的设计指南:帮助企业用户快速解决常见问题!

在互联网企业中&#xff0c;内部FAQ&#xff08;Frequently Asked Questions&#xff09;是帮助企业用户快速解决常见问题的重要工具。一个优秀的内部FAQ不仅可以提高用户满意度&#xff0c;还可以减轻客服团队的负担。本文将介绍互联网企业内部FAQ的设计指南&#xff0c;帮助企…

知识储备--基础算法篇-动态规划

1.前言 第一次接触动态规划&#xff0c;不知道具体什么意思&#xff0c;做了题才发现动态规划就是把大问题变成小问题&#xff0c;并解决了小问题重复计算的方法称为动态规划。比如上楼梯&#xff0c;一次上一阶或二阶&#xff0c;求有多少种算法&#xff0c;就可以拆成最后一…