Raft协议精解

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

RaftServer的基本结构

640?wx_fmt=other

  1. Raft服务器支持多个客户端并发连接

  2. 一致性模块负责接收客户端的消息,追加到本地日志中

  3. 一致性模块负责复制日志到其它服务器节点

  4. 本地日志commit成功后立即应用到状态机

  5. 客户端可以直接查询本地状态机的状态

日志序列的重要变量

640?wx_fmt=other

  1. firstLogIndex/lastLogIndex标识当前日志序列的起始位置,如果日志不做压缩处理,也就是没有快照模块的话,那么firstLogIndex就是零值。

  2. commitIndex表示当前已经提交的日志,也就是成功同步到majority的日志位置的最大值

  3. applyIndex是已经apply到状态机的日志索引,它的值必须小于等于commitIndex,因为只有已经提交的日志才可以apply到状态机

服务器重要的状态变量

640?wx_fmt=other

  1. 每个服务器都有自己的日志序列,日志序号索引从1开始,因为0有特殊意义,表示服务器刚刚初始化还没有包含任何日志。日志序列非常重要,是它决定了状态机的状态。

  2. 每个服务器都必须有当前的任期号,从零开始,以后逐渐单向往上递增。服务器重启后需要知道当前的任期号才可以正确的很其它节点交流,所以任期号是必须持久化的。

  3. 如果给候选节点投票了,要记录下被投票的候选节点ID。如果节点在选举期间给了一个候选人投票后突然宕机重启了,如果没有记下这个值,就很可能会重复投票,又给另一个节点投票去了。这就会导致集群存在多个Leader,也就是集群分裂。

  4. 当前已经提交的日志索引位置,服务器初始化时这个值是零表示还没有任何日志被提交。这个位置之前的所有日志都可以安全地应用到状态机中而不用当心会被覆盖。

  5. 当前已经被应用到状态机的日志索引位置,它一般和提交索引保持一致。因为一旦提交索引前进了,那么新的已经提交的日志就会立即应用到状态机中,而不应该有任何延时。

  6. Leader需要记录自身日志和所有的Follower日志的匹配位置matchIndex。matchIndex之前的日志Leader和Follower都是一致的。同时还需要记录下一个即将需要同步给Follower的日志位置。处于matchIndex和nextIndex之间的日志就是哪些正在同步中的日志,是Leader已经向Follower发过去的AppendEntries消息还没有得到成功回应的日志列表,用一个高大上的词汇来描述那就是inflight logs。

为什么commitIndex和applyIndex可以不用持久化呢?

640?wx_fmt=other

这个和日志复制的机制有关系。首先对于选举,PK的条件不是拼这两个索引值的大小,PK的是最后一条日志的任期号和日志的长度。Leader当选后进行第一次日志复制时,会和Follower进行若干次日志的匹配过程,最终可以得到Leader和各自Follower的日志匹配的matchIndex值。处于majority节点列表的matchIndex的最小值就是当前Leader的commitIndex。所以commitIndex值是完全可以动态计算出来的。 如果所有的日志都保留不截断的话,服务器重启时applyIndex应该等于零。然后重放一下所有的已经提交的日子就可以得到当前的状态机。如果日志截断有快照的话,applyIndex应该正好是日志序列的头部位置,这个位置一般是存储在快照元信息里面的,它是持久化在磁盘中的。

选举阶段候选人请求投票RPC

640?wx_fmt=other

  1. 候选人需要携带自己的任期号,供目标节点比较。同时要提供节点ID,因为投票的节点需要记录被投票的节点ID,就是前文中的voteFor字段。

  2. 候选人需要携带自身日志序列的最后一条日志的任期和索引号,供目标节点进行日志的比较。

  3. 如果候选人的任期号比自己还小,那么就拒绝投票

  4. 如果自己在当期任期已经投票了,那么也必须拒绝投票。同一任期内不得重复投票,否则会导致多个Leader的产生,也就是集群分裂

  5. 否则比较尾部日志的任期号和索引值,如果候选人的日志更新一些,那就支持投票。否则就拒绝投票。

  6. 拒绝投票一般不是不响应投票请求,而是快速地给予一个状态为failure的响应。还需要携带投票者的任期号,以便候选人能跟上时代(更新自己的任期号)。

  7. 所谓日志的update-to-date,指的是最后一条的任期号是否更大,如果一样大的话,最后一条的日志序号是否更大。

日志复制阶段Leader的日志同步请求

640?wx_fmt=other

  1. 日志同步需要携带Leader的任期号和Leader的节点ID。之所以要携带节点ID,是因为Follower可以告知客户端Leader是哪个节点,因为客户端第一次来连的时候可能是选择了任意一个节点。

  2. 日志同步需要携带需要同步的日志列表以及日志列表前面最后一条日志的索引prevLogIndex和任期号prevLogTerm。Follower需要这两个值来和自己的本地日志进行比对。

  3. 日志同步需要携带Leader的日志提交索引值,如果这个值比本地日志的提交索引值要大,那就将本地的这个值往前进。提交索引值之前的所有日志就可以安全的apply到状态机了。

  4. 如果同步请求的任期号比Follower的任期号还小,那就直接拒绝,并带上自己的任期号,以便Leader进行跟上时代(更新自己的任期号)。

  5. 如果Follower本地日子的prevLogIndex位置处没有日志或者对应的term不匹配,那就拒绝同步。同时将日志在不匹配的位置处进行截断,后面的所有日志统统剁掉。

  6. Leader收到了Follower的拒绝时,如果响应的任期号比Leader本身还大,那么Leader理解退职变身Follower。如果响应的任期号不超过Leader,Leader就将同步的日志列表往前挪一个位置,再重试同步请求。

  7. Follower如果在prevLogIndex处日志的term和请求消息中的prevLogTerm匹配,那么就将消息中的日志追加到自身的日志序列上,这个时候就可以向Leader响应成功了。

  8. Leader收到成功响应后,更新内部记录节点的matchIndex值,然后再前进全局的commitIndex值,并将最近刚刚成功提交的日志应用到状态机中。

640?wx_fmt=other

基本规则

640?wx_fmt=other

  1. 随意日志同步的持续进行,commitIndex也一直在前进。已经commit的日志要及时apply到状态机,applyIndex要紧跟者commitIndex往前走。以免客户端从状态机中查询数据时数据不太实时。

  2. 如果收到的任意RPC消息中任期号大于当前节点的任期号,那么立即跟新当前的任期号,并转换角色为Follower。任期号小了,意味着落伍了。原因可能是网络分区后又恢复了,例如下图中的灰色节点。

640?wx_fmt=other

  1. Follower是被动的,只会从candidate和leader接受RPC消息,而不是主动发出。

  2. 如果长时间收不到任何任何RPC消息,就会转变成candidate,参与选举。

  3. 节点一旦变成candidate,立即参与选举。增加自己的任期号,给自己投票,向其它节点发送RequestVote RPC消息进行拉票。

  4. candidate收到大多数节点的投票后,立即变成Leader。

  5. 如果期间收到了其它节点发来的AppendEntries日志同步请求,立即转变成Follower。表名新的leader诞生了,选举尘埃落定。

  6. 如果选举超时没有形成多数派,那就重新开始选举过程。

  7. Leader一旦当选,立即向其它节点同步一个心跳消息(no-op)。这是为了确保当前没有提交的日志也能尽快得到提交。Leader只会追加日志序列,刚当选时已经存在的日志序列,Leader会努力将它们同步到所有节点,如果Follower存在的日志和Leader有冲突,就会被抹平。最终Leader和Follower的日志就会完全一致。

  8. Leader收到客户端请求后,首先追加到本地日志序列,待日志成功apply到状态机后才向客户端响应。

  9. 如果Leader当前的日志序列增长了(lastLogIndex > nextIndex),立即向所有的Follower发送日志同步消息。

  10. 如果Follower成功响应,那么就及时跟新matchIndex和nextIndex值。

  11. 如果Follower失败响应,那么递减nextIndex值重新同步。这是Leader采用后退重试法进行日志同步的细节。

  12. 如果存在majority的matchIndex前进了,Leader的本地日志序列的commitIndex和applyIndex也要跟着前进。

Leader当选后为什么要立即同步一个no-op日志?

640?wx_fmt=other

图中S1~S5为集群中的5个节点,粗线框表示当前是leader角色。每个方框表示一条日志,方框内的数字代表日志的term。 现在假设没有no-op日志,会出现什么问题

  1. (a)图,S1为Leader,将黄色的日志2同步到了S2节点,突然就崩溃了

  2. (b)图,S5当选,将蓝色的日志3追加到本地日志序列,又突然崩溃了

  3. (c)图,S1重新当选,追加了一条红色的新日志4到本地,然后又开始同步往期日志,将黄色的日志2又同步到了S3.这时黄色的节点2已经同步到了majority,但是还来不及commit,又突然奔溃了。

  4. (d1)图,S5重新当选,并开始同步往期日志,蓝色的日志3到所有的节点。结果黄色日志2被抹平了,虽然它已经被同步到了大多数节点。

遇到这种情况就会导致一条日志虽然被同步到了大多数节点,但是还有被抹去的可能。

如果我们走(d2)图,leader不去单独同步往期的日志,而是通过先同步当前任期内的红色日志4到所有节点,就不会导致黄色的节点2被抹去。因为leader会采用后退重试法来将自己的日志序列同步到所有的Follower。在尝试同步红色节点4的过程中连带黄色的节点2一起同步了。

例子中是因为S1重新当选后立即收到了客户端的指令才有了红色的日志4。但是如果Leader刚刚当选时,客户端处于闲置状态没有向Leader发送任何指令,也就没有红色的日志4,那该怎么办呢?

Raft算法要求Leader当选后立即追加一条no-op的特殊内部日志,并立即同步到其它节点。这样就可以连带往期日志一起同步了,保障了日志的安全性。

快照同步和日志压缩

640?wx_fmt=other

当leader和follower之间的日志差异过大时,采用回退重试法同步日志效率低下。而且回退重试法要求发送的日志项包含所有不一致的日志,可能导致消息过大,导致RPC不能正常进行。

快照RPC是以chunk的形式向Follower发送日志,类似于HTTP协议的分块传送。它通过offset字段标志发送的字节偏移,通过done字段标志是否是最后一个消息块来进行分批传送。

快照RPC需要告知Follower当前的快照数据截止的日志索引,这样下次进行日志的增量同步时,从这个索引位置开始继续发送AppendEntries消息将剩下的日志追上。

快照日志处理好和当前Follower已存在的日志序列之间的关系。

如果快照日志最后一个日志项目在Follower当中已经存在,那就可以直接向Leader响应成功。因为这时快照数据是多余的。否则Follower需要将当前所有的日志序列清空,代之以快照日志进行覆盖。

快照是非常消耗资源的操作,所以Leader不能进行的太频繁。一般是等到日志序列的大小达到一个阈值后进行。快照类似于Redis的rdb操作,rdb操作完成,aof日志就可以被截断,于是日志瘦身就完成了。

640?wx_fmt=other

同样redis的主从日志同步同raft的日志同步也是类似的。当主从日志偏移差距过大时,采用快照同步,快照同步完成后继续采用增量日志同步。

640?wx_fmt=jpeg

关注公众号「码洞」,加入我们一起学习Raft协议

Raft 协议原理详解 raft是工程上使用较为广泛的强一致性、去中心化、高可用的分布式协议。在这里强调了是在工程上,因为在学术理论界,最耀眼的还是大名鼎鼎的Paxos。但Paxos是:少数真正理解的人觉得简单,尚未理解的人觉得很难,大多数人都是一知半解。本人也花了很多时间、看了很多材料也没有真正理解。直到看到raft的论文,两位研究者也提到,他们也花了很长的时间来理解Paxos,他们也觉得很难理解,于是研究出了raft算法。    raft是一个共识算法(consensus algorithm),所谓共识,就是多个节点对某个事 阅读详情

相关推荐

Nacos 是如何实现 Raft 协议的?Raft 协议的关键组件和流程是什么?

Nacos 利用 JRaft 库实现了 Raft 协议,主要用于 Nacos 集群自身的 Leader 选举和 CP 数据的强一致性同步。Raft 协议通过领导者选举、日志复制和一系列安全性机制,确保了分布式环境下数据的一致性。通过集成 JRaft,Nacos 直接利用其提供的 Raft 能力,处理复杂的 Raft 细节,如日志复制、领导者选举、成员变更等。Nacos (特别是 Nacos 2.x 版本) 集成了一个成熟、经过生产验证的 Raft 协议实现库。下使用 Raft 协议,并为。

专注于技术分享 1242

Raft分布式存储

构建一种基于Raft一致性算法的分布式键值存储数据库,以确保数据的一致性、可用性和分区容错性参考文章:两万字长文解析raft算法原理视频:解析分布式共识算法之Raft算法本项目用Raft解决的问题一致性: 通过Raft算法确保数据的强一致性,使得系统在正常和异常情况下都能够提供一致的数据视图。可用性: 通过分布式节点的复制和自动故障转移,实现高可用性,即使在部分节点故障的情况下,系统依然能够提供服务。分区容错: 处理网络分区的情况,确保系统在分区恢复后能够自动合并数据一致性。

realbread的博客 1422

TiDB中的raft协议及优化

Raft 是一个 replication log + State Machine 的模型,我们只能通过 leader 进行写入,leader 会将 command 通过 log 的形式复制到 followers,当集群的大多数节点都收到了这个 log,我们就认为这个 log 是 committed,可以 apply 到 State Machine 里面。 TiKV 的 Raft 主要移植 etc...

luo222的专栏 1977

C++实现Raft算法概念以及demo

Raft算法

weixin_45962681的博客 1296

分布式一致性协议Raft原理与实例

分布式一致性协议Raft原理与实例1.Raft协议1.1 Raft简介Raft是由Stanford提出的一种更易理解的一致性算法,意在取代目前广为使用的Paxos算法。目前,在各种主流语言中都有了一些开源实现,比如本文中将使用的基于JGroups的Raft协议实现。关于Raft的原理,强烈推荐动画版Raft讲解。1.2 Raft原理在Raft中,每个结点会处于下面三种状态中的一种: follower

西代零零发 2万+

raft一致性协议

1、一致性协议说明: 布式存储系统通常通过维护多个副本来进行容错,提高系统的可用性。要实现此目标,就必须要解决分布式存储系统的最核心问题:维护多个副本的一致性。这里说的是强一致性 首先需要解释一下什么是一致性(consensus),它是构建具有容错性(fault-tolerant)的分布式系统的基础。 在一个具有一致性的性质的集群里面,同一时刻所有的结点对存储在其中的某个值都有相同的结果,即对其共享的存储保持一致。集群具有自动恢复的性质,当少数结点失效的时候不影响集群的正常工作,当大多数集群中的结点失效的时

qq_38997816的博客 3465

分布式理论(六)Raft协议

拜占庭将军问题:在已知有成员不可靠的情况下,其余忠诚的将军需要在不受叛徒或间谍的影响下达成一致的协议。Raft算法是解决其问题的方案之一。 Raft算法 - 易于理解的一致性算法。 什么是Raft算法? Raft算法是一种用于管理复制日志的一致性算法,其功能与 Paxos算法相同类似,但其算法结构和 Paxos算法不同,在设计Raft算法时设计者就将易于理解作为其目标之一,这使得Raft算法更易于构建实际的系统,大幅度减少了工程化的工作量,也方便开发者此基础...

OrangeRen 776

别再只看pLDDT了!AlphaFold预测结果解读保姆级指南:pLDDT、PAE、pTM、ipTM到底怎么看?

本文详细解析了AlphaFold预测结果中的关键指标pLDDT、PAE、pTM和ipTM,帮助用户从单一依赖pLDDT进阶到全面理解蛋白质结构预测。通过实际案例和技巧,指导如何正确解读这些指标,避免常见错误,并提供了从预测到发表的实用建议。

weixin_29100399的博客 357

一致性协议raft详解(三):raft中的消息类型

介绍Raft中使用到的RPC的类型

杰特JET的博客 1516

别再让电池充不满!用CN3791芯片设计太阳能充电电路,这几个调试坑我帮你踩了

本文详细解析了使用CN3791芯片设计太阳能充电电路时的常见调试问题及解决方案。从RCS电阻的选择到MPPT电压偏差的修正,再到线路损耗和温度补偿的优化,提供了全面的避坑指南。通过实测数据和优化方案,帮助工程师提升锂电池充电效率,确保太阳能充电电路的稳定性和可靠性。

weixin_42528191的博客 243

VSCODE 安装LATEX环境,参数配置,常见问题解决

1 准备Texlive安装包 可以从以下网址下载 texlive 的镜像文件: 华为镜像 阿里镜像 官网 网址中大概文件构成 下载完后我们需要的文件构成(我是2020年下载过了,这次就不重新下载了) 将这个镜像文件进行解压 2 安装Texlive 右键install-tl-windows.bat,单击以管理员身份运行,进入安装界面. 点击左下角的“Advanced”进入高级安装来取消你不需要安装的宏包。 点击“Customize”来取消勾选不需要的宏包。 单是把非中英的语言包取消勾选可以省掉 1G

呆呆象呆呆的博客 6万+

利用Go语言模拟实现Raft协议

本文将从头开始复现个人利用 Go 语言模拟实现 Raft 的过程,系统实现包括本地 Raft 节点注册,Raft 节点的投票和选举,心跳监听,超时选举,Http监听,日志复制,日志提交。 本文按照个人思路,将每一部分分块进行讲解,并提供了代码,理论上可以直接运行,同时也能让初学者更好的验证每一步的代码。

qq_62306969的博客 3401

论文阅读笔记--Grid Anchor based Image Cropping: A New Benchmark and An Efficient Model

基于网格锚的图片裁剪:一种新的标准和高效的模型摘要1.介绍2.相关工作2.1 图像裁剪数据集和评估指标 摘要 图像裁剪的目的是通过去除图像中无关的内容来改善图像的组成和美学质量。现有的图像裁剪数据库大多只提供一个或多个人工标注的边界框作为基准,难以反映实际中图像裁剪的非唯一性和灵活性。 采用IoU等评价指标也不能可靠地反映裁剪模型的真实性能。本文回顾了图像裁剪的问题,并通过考虑图像裁剪的特殊特性和要求(如局部冗余、内容保存、高宽比),提出了基于网格锚的公式。 我们的公式将候选裁剪窗口的搜索空间从数百万减少到

qq_22565865的博客 2949

Raft协议详解

正文   raft是工程上使用较为广泛的强一致性、去中心化、高可用的分布式协议。在这里强调了是在工程上,因为在学术理论界,最耀眼的还是大名鼎鼎的Paxos。但Paxos是:少数真正理解的人觉得简单,尚未理解的人觉得很难,大多数人都是一知半解。本人也花了很多时间、看了很多材料也没有真正理解。直到看到raft的论文,两位研究者也提到,他们也花了很长的时间来理解Paxos,他们也觉得很难理解,于是研究出了raft算法。    raft是一个共识算法(consensus algorithm),所谓共识,就是多个

yangmengjiao_的博客 2万+

工业质检新利器:手把手教你用AD-DINOv3实现零样本缺陷检测(附MVTec AD实战)

本文详细介绍了AD-DINOv3框架在工业质检中的应用,通过零样本异常检测技术解决传统方法的标注成本高和泛化能力弱问题。文章包含技术原理解析、MVTec AD数据集实战部署、模型训练流程及工业部署优化技巧,帮助读者快速掌握这一创新技术。

seed的博客 765

IB网络下不同租户业务隔离方案

IB(InfiniBand)网络隔离可以在不同的通信模式下实现,其中包括 IPoIB(IP over InfiniBand)通信模式。在 IPoIB 模式下,InfiniBand 网络可以承载 IP 数据包,使得基于 IP 的应用程序能够在 InfiniBand 网络上进行通信。在这种情况下,IB 网络隔离通常指通过配置 Partition Key(PKey)来实现不同的租户或应用程序之间的网络隔离。然而,IB 网络隔离并不仅限于 IPoIB 模式。

guganly的专栏 1529

ZAB 协议 与 Raft协议 比较

我们不仅要在平时工作和学习中,认真、全面的学习理论,掌握概念的内涵,还要能“包容”和“发展”着理解技术。 Raft协议是 ZAB 是通过“一切以领导者为准”的强领导者模型和严格按照顺序处理、提交提案,来实现操作的顺序性的。主节点是基于 TCP 协议来广播消息的,并保证了消息接收的顺序性。 Raft 算法(主备、强领导者模型)与 ZAB 协议非常类似,它是作为共识算法和 Multi-Paxos 算法提出的。当它被广泛接受和认可后,共识算法的内涵也就丰富和发展了,不仅能实现一系列值的共识,还能保证值的顺序

wangxuelei036的博客 1万+

Quanto option期权公式推导(更新中)

Quanto期权不同于以标的股票或资产的计价货币支付最终收益的普通欧式期权,它以另一种货币以预先确定的汇率支付最后的收益。以股票B的计价货币来计价的quanto看涨期权的收益为F0×max⁡(Sa(T)−K,0)×Sb(T)F_0 \times \max(S_a(T)-K, 0) \times S_b(T)F0​×max(Sa​(T)−K,0)×Sb​(T) 其中SaS_aSa​以货币A计价,SbS_bSb​以货币B计价,F0F_0F0​是预先固定的汇率. 假设上述股票均遵循几何布朗运动,可以得到以下恒等式

qq_41782124的博客 3686

28图图解Raft协议,so easy~~

Raft协议是用来保证服务中各节点数据强一致性的,也就是CAP定理中的CP在Raft协议中,集群中的服务(也可以被称为节点,Peer)会有三种状态:Leader:主节点,负责处理所有的请求,一个集群只有一个Leader,处于唯我独尊的地位Follower:从节点,主要是负责复制Leader的数据,保证跟Leader的数据的一致性,Follower必须服从LeaderCandidate:候选节点,中间状态,最终会变成Leader或者Follower。

kfashfasf的博客 3117

基于PyTorch+Transformer实现谣言检测系统

本项目使用基于`PyTorch+Transformer`的谣言检测模型,将文本中的谣言事件进行连续向量化,通过一维卷积神经网络的学习训练来挖掘表示文本深层的特征,避免了特征构建的问题,并能发现那些不容易被人发现的特征,从而产生更好的效果。

优快云 精品推荐 6352

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

3.Nacos一致性协议Raft

Nacos一致性协议 分布式一致性协议有很多,例如Paxos协议,Zab协议,Raft协议,而Nacos采用的是Distro协议和Raft协议。对于非临时数据,Nacos采用的是Raft协议,而临时数据Nacos采用的是Distro协议。简单说一下Distro,Distro协议被定位为临时数据的一致性协议:该类型协议不需要把数据存储到磁盘或者数据库,因为临时数据通常和服务器保持一个session会话,该会话只要存在,数据就不会丢失。本篇文章主要针对于CP的Raft算法。 Raft一致性协议 Nacos支持集

xingxinggua9620的博客 4168

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

Raft协议

相比于Paxos,Raft最大的特性就是易于理解(Understandable)。为了达到这个目标,问题分解:把共识算法分为三个子问题,分别是领导者选举(leader election)日志复制(log replication)安全性(safety)状态简化:对算法做出一些限制,减少状态数量和可能产生的变动。• 论文中对43个大学生做了个实验,让他们同时学习Paxos和Raft,结果显示,其中有33个人学习Raft的成绩好于学习Paxos的成绩在Cold,new。

weixin_44911248的博客 3688

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

Raft协议原理详解

Raft协议原理详解 Raft是一种分布式一致性算法,通过明确的角色划分和任期机制解决共识问题。系统包含三种节点角色:Leader(处理请求)、Follower(被动响应)和Candidate(选举状态)。时间被划分为递增的任期(Term),每个任期通过选举产生唯一Leader。选举流程包括:Follower在超时后转为Candidate并发起投票,获得多数票则成为Leader,定期发送心跳维持权威。Raft的核心创新在于将复杂问题分解为领导者选举和日志复制两个清晰子问题,通过随机超时和任期机制确保系统在节

从不水文,坚持创作,加油 2473

【Nacos系列】一致性协议:Raft协议 & Distro协议

如果需要更深入的源码分析(如 Raft 日志复制实现),请告诉我!的对比解析,包含核心原理、实现差异和应用场景。服务发现(容忍短暂不一致)较高(本地写入+异步复制)低(无选举,简单异步同步)强一致性(线性一致性)较低(需多数节点同步)脑裂时部分分区不可用。配置管理(需强一致)高(选举、日志复制)

技术改变世界 1453
上一篇: 一个Raft开源项目的结构分析
下一篇: Raft只读操作实现要点
码洞
博客等级 码龄10年 41粉丝 137原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值