raft的实际运用(raft,编程语言)

时间:2024-05-06 18:03:39 作者 : 石家庄SEO 分类 : 编程语言
  • TAG :

    raft%E7%9A%84%E5%AE%9E%E9%99%85%E8%BF%90%E7%94%A8

这篇文章给大家分享的是raft的实际运用,相信大部分人都还没学会这个技能,为了让大家学会,给大家总结了以下内容,话不多说,一起往下看吧。

1、raft.go 的raft结构体 补充字段。 字段应该尽量与raft论文的Figure2接近。

1、获取当前节点的log个数,以及最后一个log的term 确定当前节点的term。

2、如果调用节点的term小于当前节点,返回当前term,并且不为其投票。

3、如果调用节点的term大于当前节点,修改当前节点的term,当前节点转为follower.

4、如果调用节点的term大于当前节点,或者等于当前节点term并且调用节点的log个数大于等于当前节点的log,则为调用节点投票。

5、投票后重置当前节点的选举超时时间。

除了一些基本的初始化过程,新开了一个goroutine。

除了shutdown,还有两个通道,一个是electionTimer,用于选举超时。

一个是resetTimer,用于重置选举超时。

注意time.reset是很难正确使用的。

一旦选举超时,调用go rf.canvassVotes()

replyHandler是进行请求返回后的处理。

当前节点为了成为leader,会调用每一个节点的RequestVote方法。

如果返回过来的term大于当前term,那么当前节点变为follower,重置选举超时时间。

否则,如果收到了超过一半节点的投票,那么其变为了leader,并立即给其他节点发送心跳检测。

1、leader调用每一个节点的AppendEntries方法。

2、如果当前节点大于调用节点,那么AppendEntries失败。否则,修改当前的term为最大。

3、如果当前节点是leader,始终将其变为follower(为了让leader稳定)

4、将当前节点投票给调用者(对于落后的节点)。

5、重置当前节点的超时时间。

如果心跳检测失败了,那么变为follower,重置选举超时。

看完上述内容,你们掌握raft的运用方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注行业资讯频道,感谢各位的阅读!

本文:raft的实际运用的详细内容,希望对您有所帮助,信息来源于网络。
上一篇:CloudFoundry in 1 Box简介:PCF-Dev篇下一篇:

7 人围观 / 0 条评论 ↓快速评论↓

(必须)

(必须,保密)

阿狸1 阿狸2 阿狸3 阿狸4 阿狸5 阿狸6 阿狸7 阿狸8 阿狸9 阿狸10 阿狸11 阿狸12 阿狸13 阿狸14 阿狸15 阿狸16 阿狸17 阿狸18