美文网首页
分布式状态一致--Raft算法

分布式状态一致--Raft算法

作者: 安中古天乐 | 来源:发表于2020-08-04 11:17 被阅读0次

    要学习Raft算法,强烈推荐一个网址: http://thesecretlivesofdata.com/raft/

    基本上述网址多看几遍,Raft算法就了解得七七八八了。

    但关于Raft算法,还需要注意以下关键点:

    • 保证各server节点的选举超时时间相异

    Raft有2个超时配置,1个为选举超时时间(election timeout),其表征了节点状态由follower转变为candidate所需要的时间,其在150ms-300ms之间随机取值。

    集群初始状态时,各server节点的状态均为follower,当server时钟超时后,状态会由follower转变为candidate。

    candidate状态的server节点会发起投票流程,candidate节点会先投自己1票,然后给其他节点发送求票信息,若其他节点收到求票信息时还未超时,则会将票投给发送请求的candidate节点。

    票数最多的candidate节点状态将会更新为leader。

    若各server节点的超时时间相同,则选举过程可能会陷入胶着状态,难以选出leader。

    leader选取成功后,会周期性地发送心跳信息给各follower,该周期即是Raft另外1个超时配置: 心跳超时(heartbeat timeout)。

    若follower未在heartbeat timeout时间内收到来自leader的心跳信息,则会由follower状态转化为candidate,并发起新一轮的投票流程。

    • leader节点必须等待大多数follower将状态写入日志,才可将该状态值commit。
    1.jpg 2.jpg 3.jpg 4.jpg
    • 当2个follower节点同时变为candidate,会发生split vote
    5.jpg 6.jpg 7.jpg 8.jpg

    相关文章

      网友评论

          本文标题:分布式状态一致--Raft算法

          本文链接:https://www.haomeiwen.com/subject/pmairktx.html