Raft算法详解

一文彻底搞懂Raft算法,看这篇就够了!!! 分布式系统通常由异步网络连接的多个节点构成,每个节点有独立的计算和存储,节点之间通过网络通信进行协作。分布式一致性指多个节点对某一变量的取值达成一致,一旦达成一致,则变量的本次取值即被确定。在大量客户端并发请求读/写的情况下,维护数据多副本的一致性无疑非常重要,且富有挑战。因此,分布式一致性在我们生产环境中显得尤为重要。数据不能存在单个节点(主机)上,否则可能出现单点故障。多个节点(主机)需要保证具有相同的数据。 阅读详情

一、Raft 算法简介

Raft 是一种分布式一致性算法,用于管理复制日志。在分布式系统中,多个节点需要保持数据的一致性,Raft 算法提供了一种简单且高效的方式来实现这一点。与其他一致性算法(如 Paxos)相比,Raft 算法的设计目标是更易于理解和实现。它将一致性问题分解为几个相对独立的子问题,包括领导者选举、日志复制、安全性和成员变更等。

二、Raft 算法中的角色

  1. 领导者(Leader):在 Raft 集群中,同一时刻只有一个领导者。领导者负责接收客户端的请求,将请求转化为日志条目,并将日志条目复制到其他节点(跟随者)。领导者还会定期向跟随者发送心跳消息,以维持自己的领导地位。
  2. 跟随者(Follower):跟随者处于被动状态,它们接收并响应来自领导者的请求和心跳消息。如果在一段时间内没有收到领导者的心跳,跟随者会发起选举,尝试成为新的领导者。
  3. 候选人(Candidate):当跟随者发起选举时,它会转变为候选人状态。候选人会向其他节点发送投票请求,争取获得多数节点的投票支持,以成为新的领导者。

三、领导者选举

  1. 选举超时:每个跟随者都有一个选举超时时间(通常是一个随机值,例如 150-300 毫秒)。如果在选举超时时间内没有收到领导者的心跳消息,跟随者会认为领导者已经失效,从而发起选举。
  2. 发起选举:跟随者转变为候选人状态,并增加自己的任期(Term)值。任期是一个单调递增的整数,用于标识选举的轮次。候选人向集群中的其他节点发送投票请求,请求其他节点投票给自己。
  3. 投票过程:其他节点收到候选人的投票请求后,会根据一定的规则进行投票。例如,节点只会投票给任期大于自己当前任期的候选人,并且在同一任期内,每个节点只能投一票。如果候选人获得了集群中多数节点的投票(超过半数),则它将成为新的领导者。
  4. 领导者产生:新的领导者会定期向其他节点发送心跳消息,以维持自己的领导地位。如果在选举过程中没有候选人获得多数投票(例如,多个候选人同时获得相同数量的投票),则会进入下一轮选举,直到产生新的领导者。

四、日志复制

  1. 日志结构:Raft 算法中的日志由一系列有序的日志条目组成。每个日志条目包含一个任期号(Term)和一个命令(Command),命令通常是客户端的请求。日志条目在集群中的所有节点上按照相同的顺序进行复制。
  2. 日志复制过程:当领导者接收到客户端的请求时,它会将请求转化为一个新的日志条目,并将该日志条目追加到自己的日志中。然后,领导者将新的日志条目复制到其他跟随者节点。跟随者节点接收到日志条目后,会将其追加到自己的日志中,并向领导者发送确认消息。
  3. 提交日志:领导者只有在确认多数节点(超过半数)已经成功复制了某个日志条目后,才会将该日志条目提交。一旦日志条目被提交,领导者就会执行该日志条目中的命令,并将执行结果返回给客户端。跟随者在收到领导者的提交消息后,也会执行相应的日志条目。
  4. 日志一致性检查:在日志复制过程中,可能会出现节点之间日志不一致的情况(例如,某个节点由于故障而错过了一些日志条目)。为了保证日志的一致性,领导者会定期向跟随者发送心跳消息,并在心跳消息中包含自己最新的日志信息。跟随者会将自己的日志与领导者的日志进行比较,如果发现不一致,跟随者会向领导者请求缺失的日志条目,领导者会将缺失的日志条目发送给跟随者,以保证日志的一致性。

五、安全性

  1. 选举安全性:Raft 算法通过保证在同一任期内只有一个领导者被选举出来,来确保选举的安全性。如果在选举过程中出现多个候选人同时获得多数投票的情况,会进行重新选举,直到产生唯一的领导者。
  2. 日志安全性:Raft 算法通过日志复制和提交机制来保证日志的安全性。只有当多数节点都成功复制了某个日志条目后,该日志条目才会被提交。一旦日志条目被提交,它就不会被回滚或修改,从而保证了日志的一致性和可靠性。
  3. 领导者完整性:Raft 算法保证当选的领导者一定包含了所有已经提交的日志条目。这是通过投票规则来实现的,节点只会投票给任期大于自己当前任期且日志至少和自己一样新的候选人。这样可以确保当选的领导者拥有最新的已提交日志,从而保证了系统的安全性和一致性。

六、成员变更

在 Raft 集群中,有时需要添加或删除节点,这就涉及到成员变更操作。Raft 算法采用一种两阶段的成员变更方法,以确保在成员变更过程中系统的一致性。

  1. 第一阶段:领导者创建一个包含新成员配置的日志条目,并将该日志条目复制到集群中的所有节点。在这个阶段,所有节点仍然使用旧的成员配置进行操作。
  2. 第二阶段:当多数节点都成功复制了包含新成员配置的日志条目后,领导者会提交该日志条目。提交后,所有节点开始使用新的成员配置进行操作。
二十张图带你一次性学懂Raft算法 一文带你领略Raft算法的魅力 阅读详情

相关推荐

Nacos如何实现Raft算法与Raft协议原理详解

前言 大名鼎鼎的Paxos算法可能不少人都听说过,几乎垄断了一致性算法领域,在Raft协议诞生之前,Paxos几乎成了一致性协议的代名词。但是对于大多数人来说,Paxos算法太难以理解了,而且难以实现。因此斯坦福大学的两位教授Diego Ongaro和John Ousterhout决定设计一种更容易理解的一致性算法,最终在论文"In search of an Understandable Consensus Algorithm"中提出了Raft算法! Raft 适用于数据一致...

Jack章臣的博客 3447

Raft一致性算法

Paxos算法是莱斯利·兰伯特(LeslieLamport,就是 LaTeX 中的”La”,此人现在在微软研究院)于1990年提出的一种基于消息传递的一致性算法。由于算法难以理解起初并没有引起人们的重视,使Lamport在八年后1998年重新发表到ACM Transactions on Computer Systems上

我的奋斗 7万+

告别功能限制:Win11家庭版无损升级专业版全攻略

本文详细介绍了如何将Win11家庭版无损升级到专业版的全过程,包括升级前的准备、两种官方升级方案(Microsoft Store购买和使用产品密钥)以及命令行升级方法。升级后可解锁远程桌面、组策略编辑器和BitLocker加密等高级功能,适合需要更多商业功能的用户。

weixin_32822843的博客 699

RAFT算法详解

一、RAFT算法 1、Raft算法概述   Raft算法则是从多副本状态机的角度提出,用于管理多副本状态机的日志复制。Raft实现了和Paxos相同的功能,它将一致性分解为多个子问题:Leader选举(Leader election)、日志同步(Log replication)、安全性(Safety)、日志压缩(Log compaction)、成员变更(Membership change)等。同时...

青萍之末的博客 2万+

【COMSOL】将一个面上数据导出CSV或txt格式的方法

在COMSOL中参数化扫描后,把一个面上或体里的数据按照CSV或TXT格式导出的方法。

dave496206的博客 2989

西门子交换机环网冗余设置(实战篇2.2)

MRP的重组时间为 200ms 因此 PROFINET 通信必须选择大于 200ms 的看门狗时间,看门狗。ET200SP默认为 2ms*3=6ms) MRP 的重组时间为 200ms 故系统会报出看门狗超时。更新,默认是 3 个周期,超出设置的周期数就会报 IO 设备故障。时间不是直接配置的,而是作为没有 IO 数据可接受的更新周期,也就是允许几个周期没有数据。来达到大于 200ms 的看门狗时间的要求(看门狗时间 可接受更新周期数 更新时间)。是IO 控制器和 IO 设备)

weixin_42580591的博客 364

Raft 算法详解

在分布式系统中,一致性算法至关重要。在所有一致性算法中,Paxos 最负盛名,它由莱斯利·兰伯特(Leslie Lamport)于 1990 年提出,是一种基于消息传递的一致性算法,被认为是类似算法中最有效的。Paxos 算法虽然很有效,但复杂的原理使它实现起来非常困难,截止目前,实现 Paxos 算法的开源软件很少,比较出名的有 Chubby、LibPaxos。

李少侠 1678

软件测试工程师最常用的Linux系统命令大全(汇总)

cd命令这是一个非常基本,也是大家经常需要使用的命令,它用于切换当前目录,它的参数是要切换到的目录的路径,可以是绝对路径,也可以是相对路径。

1330

分布式共识算法 —— Raft详解

文章目录分布式共识算法顺序一致性线性一致性因果一致性Raft 算法原理概览选举机制参考文献 分布式共识算法 首先我们先明确这个问题:为什么需要分布式共识算法? 这就要从当前的分布式系统设计的缺陷来看了,假设我们的集群现在有两个客户端和三个服务端,如下图: 在这个分布式系统的设计中,往往要满足CAP理论,而分布式共识算法解决的就是CAP理论中的一致性问题。整个一致性问题分为三种问题: 顺序一致性 线性一致性 因果一致性 顺序一致性 顺序一致性是1979年Lamport 在论文《How to Make a

0 error(s) 2万+

海康VisionMaster零代码开发实战:从PLC工程师到视觉专家的捷径

本文为PLC工程师提供了利用海康VisionMaster视觉平台实现零代码视觉开发的实战指南。文章详细阐述了如何通过图形化流程设计替代传统编程,快速搭建视觉检测应用,并实现与PLC的无缝通讯,是工程师从设备控制迈向视觉系统集成的有效捷径。

weixin_29201859的博客 293

VC Spyglass:Lint实战指南之TCL脚本自动化解析

本文详细介绍了如何利用TCL脚本实现VC Spyglass Lint检查的自动化流程。通过实战指南,从基础脚本编写到高级参数化技巧,帮助数字IC设计工程师摆脱手动操作,提升验证效率,并实现与CI/CD流程的集成。

h3i4j的博客 796

raft算法详解

文章目录一、raft算法的背景1.什么是raft算法1.2Paxos 算法的缺点二、raft算法的基础1.raft角色2.Term3.RPC4.raft 三个子问题5.raft 五个特性三、选举(Leader Election)四、日志复制(Log Replication)1.日志的主要构成2.日志复制的流程2.1 leader 在自身节点上新增(append)日志2.2 leader 发送 AppendEntries RPC 信号和Entry给其他节点2.3 leader等待Followers回应2.4

qq_45993646的博客 5473

【WRF理论第十四期】 VEGPARM.TBL 文件详解

WRF 读取 VEGPARM.TBL 文件

WW、forever的博客 575

一致性算法Raft详解

原文出处:http://www.solinx.co/archives/415?utm_source=tuicool&utm_medium=referral 一致性算法Raft详解 背景   熟悉或了解分布性系统的开发者都知道一致性算法的重要性,Paxos一致性算法从90年提出到现在已经有二十几年了,而Paxos流程太过于繁杂实现起来也比较复杂,可能也是以为过于复杂

小小本科生成长之路 1万+

保姆级教程!Python爬虫爬取知乎回答,保存为Markdown文件

本教程实现了知乎公开回答的完整爬取与Markdown保存,核心流程为「请求页面→解析作者/时间/正文/图片→下载图片→保存MD文件」,步骤清晰,代码可直接复用关键特性:支持合并/单文件两种保存模式、自动下载图片并引用、中文乱码防护、非法文件名过滤,满足日常整理知乎回答的需求新手友好:无需复杂配置,仅需修改知乎问题URL即可运行,全程无坑,5分钟内可看到运行结果灵活扩展:支持进阶优化(登录、分页、格式完善),可根据个人需求调整功能。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 1232

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

9.Raft算法详解

Redis7

u011488477的博客 1321

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

【面试】Raft算法详解

Paxos算法详解一文讲述了晦涩难懂的Paxos算法,以可理解性和易于实现为目标的Raft算法极大的帮助了我们的理解,推动了分布式一致性算法的工程应用,本文试图以通俗易懂的语言讲述Raft算法。不同于Paxos算法直接从分布式一致性问题出发推导出来,Raft算法则是从多副本状态机的角度提出,用于管理多副本状态机的日志复制。

DreamSun的博客 2599

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

上一篇: AQS原理详解
java烤冷面
博客等级 码龄4年 177粉丝 29原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值