jraft源码阅读4一leader选举
2019-04-11 本文已影响0人
黄云斌huangyunbin
1 定时器,一直没收到leader的心跳,就尝试选举自己


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

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


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


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

是在收到心跳结果返回的时候,发起下一次心跳的。
5 follower是如何处理选举请求的
handleRequestVoteRequest方法:
首先,如何term要比自己的大

其实logid要比自己的大

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

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