选举之Raft算法
admin
2024-03-08 00:52:33

一、什么是Raft算法

Raft算法是基于Multi-Paxos 思想 提出的一种易于理解的共识算法,主要解决了分布式中的一致性问题。

二、选举过程

Raft算法中每个节点拥有三种状态:
Follower 跟随者状态
Candidate 候选者状态
Leader 领导者状态
1、所有的节点初始都是在跟随者状态下
2、如果一个跟随者在一定时间内(150ms 至300ms,随机值)没有收到领导者的心跳信息,自己将变成候选者状态,先投自己一票,并向群体内的其它节点发送选举投票请求
3、群体内的其它节点如果在这一任期内没有投过票,收到投票请求后将投一票给候选者,并返回
4、如果一个候选者收到了群体内大多数人(N/2 + 1)的投票,它将变成一名领导者,选举完成,开始不断地向其它节点发送心跳检测。任期将一直持续到某一个跟随者在一定时间内没有收到领导者的心跳信息。
选举完成之后,所有的数据操作将都通过领导者进行

通过上述的选举过程发现,肯定会有一定几率,两个跟随者节点同时进入候选者状态。
Raft算法中还有一个概念叫做任期(term),在一个任期中,每个节点只能投一次票。每次处理群体内其它节点的请求时,都会对term进行校验或者更新,当某个节点发现自己的 term 号比其他人小,那么它会更新到较大的 term 值。如果一个 Candidate 或者 Leader 发现自己的 term 过期了,他会立即退回成 Follower。如果一台服务器收到的请求的 term 号是过期的,那么它会拒绝此次请求。

个人理解可以想象成你们村儿选第二百五十届村长,term相当于第250个任期,有2个候选者,2个村名去竞选,你爸是村民,你家在这个任期只能投一票,你爸投给了张三,就不能投给李四了。

这时候他们会进行 2 步骤:先投自己一票,并向群体内的其它节点发送选举投票请求
并且两人都拉到了一名村民(跟随者)的投票,这时两位候选者都拥有两票,这一任期内的选举就失败了,赋随机等待值继续等待下一任期的选举,重复2-4步骤

相关内容

热门资讯

【东方24节气·小雪】小雪要“... 本期专家:北京中医药大学东方医院治未病科 主治医师 李壮 小雪节气,天气渐冷,气寒将落雪,而地寒未甚...
螃蟹蒸多久才会熟?掌握3个关键... 导读:螃蟹蒸多久才会熟?掌握3个关键时间点,锁住鲜美,不掉退不流黄 金秋十月,正是螃蟹肥美的季节。清...
从“家乡味”到“国际范”,江苏... 交汇点讯 当图案精美的糕点礼盒跨越重洋,当非遗技艺酿造的陈年佳酿浸润异域舌尖……从“家乡味”到“国际...
“魅力伊宁·和美杏乡”2025... 11月19日下午,“魅力伊宁·和美杏乡”2025年伊宁县文化旅游推介会在四川成都举行,以四季皆美的独...
惊艳!四川茂县松坪沟景区彩林色... 11月19日,初冬季节的四川省茂县松坪沟风景区景色如画,彩色山林与清澈的高山湖泊、溪流构成一幅幅美景...