首页 > 其他分享 >Raft 基本流程

Raft 基本流程

时间:2022-09-20 15:00:05浏览次数:60  
标签:基本 候选者 收到 选举 流程 领导者 跟随者 Raft 节点

领导选举 —> 状态复制

  • 领导选举

每个节点可以有三个身份,分别是跟随者,候选者和领导者。

当节点是跟随者时,它并没有收到领导者的消息,那它就可以变成候选者。接下来,成为候选者的节点会请求其他节点给自己发来选票,其他节点收到请求以后会回复它。如果某个候选者收到绝大多数节点的投票,那它就变成领导者。

  • 状态复制

当一个节点被选为领导者时,所有系统中的变化都会经由领导者处理。客户端每一个数据变化都会首先新增到领导者的日志中,并且将当前数据设置为未提交状态。接下来,领导者将数据复制传给各个跟随者节点,领导者会一直等待直到大多数节点已经将数据写入了(写入后会回复领导者表示已经收到了)。此时领导者就可以将当前状态设为已提交,并且通知所有跟随者当前数据已提交了。领导者发送消息告诉客户端,此时达到了分布式共识。

  • 协议细节:
  • 选举过程:

1)选举timeout设置:跟随者会等待一段时间直到变成候选者,这段时间随机设定为150ms至300ms(每个节点随机)。当时间结束后,跟随者变为候选者,并且开始新的任期term。接下来成为候选者的节点就会发送RequetVote消息给其他节点(自己也会投给自己一票),如果收到消息的其他节点没有投过票,那它就为这个候选者投票。节点投完票之后就会重置自己选举倒计时。换句话说,每个节点为自己计时,当倒计时结束时,就认可自己是候选者,一旦有一个候选者拥有了大多数的票数,那它就变成了领导者。

领导者开始发送Append Entries信息给跟随者节点们,这些消息按照heartbeat倒计时规定的时间间隔发送,然后跟随着会回复每个Append Entries。当有一个跟随者节点停止接受心跳包并且变成候选者时,这次选举任期会结束。

2)如果两个节点同时变成了候选者,就会出现分裂投票,即两个节点票数相等。此时会重新等待新的候选者成为领导者。

  • 状态复制过程

1)一旦我们选出了领导者,我们就需要将系统的所有更改复制到所有节点,这通过使用Append Entries作为心跳包完成。

2)当出现网络分区时,可能会出现多个领导者。当某个领导者看到更大的任期数字时它会下台。由于无法收到大多数跟随者节点的确认,某个领导者会将状态设为未提交,因此会回滚其未提交的条目,并且匹配新领导的日志。

标签:基本,候选者,收到,选举,流程,领导者,跟随者,Raft,节点
From: https://www.cnblogs.com/rachelf99/p/16711043.html

相关文章

  • 第一章 防火墙基本介绍
    一、安全技术入侵检测与管理系统(IntrusionDetectionSystems):特点是不阻断任何网络访问,量化、定位来自内外网络的威胁情况,主要以提供报告和事后监督为主,提供有针对性的指......
  • 九月加息75基本以成定局 年底终端利率将决定中期大选前风险市场走势 — 2022.9.20
    九月加息75基本以成定局年底终端利率将决定中期大选前风险市场走势—2022.9.20随着昨天晚上美股的走势BTC和ETH因为昨天上午开始出现的下跌恐慌情绪终于消散了一些,虽然......
  • 京东物流注册流程
    京东物流流程注册账号,创建物流应用(需要提交《物流应用系统对接申请》)保存AppKey和AppSecret,并配置回调接口调用接口获取codehttps://open-oauth.jd.com/oauth2......
  • 漏洞管理流程
    在之前的文章中,我们分别讨论了漏洞修复和CVSS评分系统。而这两部分都是漏洞管理中涉及的关键要素。在今天的文章中,我们将一起系统地了解漏洞管理的概念及过程。首先来看......
  • 基本DOS命令
    基本的DOS命令打开CMD的方式开始+系统+命令提示符Win键+R输入cmd打开控制台(推荐使用)在任意的文件夹下面,按住shift键+鼠标右键点击,在此处打开命令行窗口资源......
  • 数据库基本操作
    创建数据库: creatdatabasedbxdefaultcharsetUTF8;创建表:creattable表名(列名1,列名2.。。)插入数据:insertinto表名(列名1,列名2)values(数据1,数据2)清空数据:de......
  • 机器学习一般流程
     预备:把实际问题转化为机器学习问题,即能够从现有的数据中学的某种规律,从而解决实际问题(预测或分类)机器学习是数据和模型的结合。  一.获取数据:人工合成、爬虫、数据......
  • Activiti6.0下activiti-app实现一个简单请假流程
    Activiti6.0下activiti-app、activiti-admin、activiti-rest的基本配置,详见上文:https://www.cnblogs.com/gdjlc/p/16703897.html下面实现一个简单请假流程。一、创建流程......
  • 基本的反爬措施
    #添加header信息,这是最基本的反爬措施url="https://www.dianping.com/"header={"User-Agent":"Mozilla/5.0(WindowsNT10.0;Win64;x64)AppleWebKit/537......
  • Java基础2——流程控制
    Scanner通过scanner获取用户的输入,实现交互。importjava.util.Scanner;publicclassdemo{publicstaticvoidmain(String[]args){Scannners=n......