jraft

jraft源码阅读4一leader选举

2019-04-11  本文已影响0人  黄云斌huangyunbin
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处理预选的逻辑基本一样,这里就不赘述了。

上一篇 下一篇

猜你喜欢

热点阅读