raft简单回答

发布时间:2022-06-20 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了raft简单回答脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
@H_304_0@1. 三个状态:⼀个节点任⼀时刻处于三者之⼀

1,leader(领导者):  主节点,与客户端的通讯,还有与follower从节点的的数据同步心跳机制的维护。

2,follower(追随者):从节点,转发客户端的请求到leader节点,保持与leader节点的数据同步。

3,candidate(候选者):候选人,该节点状态下表示现在是选举主从节点的时间点,作为候选人,既有可能成为leader,也有可能成为follower。

2. Term和vote概念

 term属性表示投票的轮数,vote属性就是代表各个节点投票的时候,该节点选择投的那个节点。

3. LOG与index概念

log日志每个节点都持有一份,每个日志文件包含: index索引号,term任期号,以及term任期号下的数据信息

 

主从选举原理:

raft和zookeePEr一样都采用 过选举 的机制,所以我们推荐raft的实现同ookeeper一样,也是奇数个节点部署。

假设abc三个节点

1.三个节点进行启动的时候, 首先进入candidate(候选者)的状态 ,然后进行投票选举,所有的节点都会在本地创建一个 term属性,并且初始化值为0 ,然后每个节点都会设置一个 随机数的倒计时(150~300ms) ,那个节点先结束倒计时,他就会先给自己投一票且设置自己的term=1,即携带(vote = 自己)的投票请求给其他两个节点。

2.假设C先结束,这个时候节点A和B还没有结束倒计时,A和B在收到C的投票请求之后,首先会比较收到的term和自己的term作比较,比自己的大就投给C投票,然后响应投票请求。

3.当C节点只收到过半投自己的票的响应,C就成为learder节点,剩下节点就会 从candidate(候选者)状态转为follower(追随者)。

4.为了止learder主节点发生单点故障问题,就是每个follower节点在和leader节点维持心跳的时候,都会设置一个 超时时间(timeout) ,当follower节点在等待leader节点的心跳请求的时候如果超过了这个超时时间,就会认为leader出现了异常,进而会 重新进入candidate状态 ,然后重新选举。

 数据同步原理:

如果客户端请求先发送到了follower节点,会先转发到leader。

1.leader先对follower节点进行阶段提交,看每个follower节点能不能同步。

2.leader判断过半的节点都可以进行同步,leader先进行数据存储,并记录日志 ,直接返回给客户端成功的响应。

3.然后follower进行数据存储,并记录日志。

 

脚本宝典总结

以上是脚本宝典为你收集整理的raft简单回答全部内容,希望文章能够帮你解决raft简单回答所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。