美文网首页jraft
jraft源码阅读4一leader选举

jraft源码阅读4一leader选举

作者: 黄云斌huangyunbin | 来源:发表于2019-04-11 09:27 被阅读0次
    1 定时器,一直没收到leader的心跳,就尝试选举自己
    image.png image.png
    2 预选

    如果超过半数以上预选成功,才开始正式选举自己。
    预选的只是请求中的term加一,但是本地的term不加一,正式的选举本地的term也会加一


    image.png
    3 正式选举

    本地的term加一,超过半数以上的同意,就当选leader。


    image.png image.png
    4 选举成功,发送心跳给follower
    image.png
    image.png

    可以看到这里只是定了下次的执行时间,心跳是一直发的,怎么实现一直发的呢


    image.png

    是在收到心跳结果返回的时候,发起下一次心跳的。

    5 follower是如何处理选举请求的

    handleRequestVoteRequest方法:
    首先,如何term要比自己的大


    image.png

    其实logid要比自己的大


    image.png

    可以看到同意后会执行stepDown方法,这个会改变自己的term为请求者的term


    image.png

    handlePreVoteRequest处理预选的逻辑基本一样,这里就不赘述了。

    相关文章

      网友评论

        本文标题:jraft源码阅读4一leader选举

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