jraft源码阅读4一leader选举

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处理预选的逻辑基本一样,这里就不赘述了。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 最近看了Ongaro在2014年的博士论文《CONSENSUS: BRIDGING THEORY AND PRAC...
    山本聪阅读 11,794评论 2 19
  • 最近看了Ongaro在2014年的博士论文《CONSENSUS: BRIDGING THEORY AND PRAC...
    山本聪阅读 10,056评论 3 11
  • 1.所向披靡的魅力 亚亚是朋友圈的女神,一头细软蓬松的棕黄色长发,一双妩媚风情的电眼,身材火辣,身边围着一帮爱音乐...
    不上相姑娘阅读 4,845评论 11 39
  • DNS域名系统域名不同等级的域名之间使用点号分隔,级别最低的域名写在最左边,级别最高的域名写在最右边域名的根域用"...
    March_13th阅读 3,846评论 0 0
  • 参加熊猫小课,用7天学习如何用手机拍摄出高质量的照片,现在只学习了4天,主要的课学了一半多一点点。总结如下:1、取...
    山茶聆听阅读 1,716评论 0 1