《Dubbo 实现原理与源码解析 —— 精品合集》 《Netty 实现原理与源码解析 —— 精品合集》
《Spring 实现原理与源码解析 —— 精品合集》 《MyBatis 实现原理与源码解析 —— 精品合集》
《Spring MVC 实现原理与源码解析 —— 精品合集》 《数据库实体设计合集》

摘要: 原创出处 https://www.jianshu.com/p/b0cdaa64688e 「黄云斌」欢迎转载,保留摘要,谢谢!


🙂🙂🙂关注**微信公众号:【芋道源码】**有福利:

  1. RocketMQ / MyCAT / Sharding-JDBC 所有源码分析文章列表
  2. RocketMQ / MyCAT / Sharding-JDBC 中文注释源码 GitHub 地址
  3. 您对于源码的疑问每条留言将得到认真回复。甚至不知道如何读源码也可以请教噢
  4. 新的源码解析文章实时收到通知。每周更新一篇左右
  5. 认真的源码交流微信群。

raft的一个基本逻辑是leader隔一段时间给所有的follower发心跳。如果follower长时间没收到心跳,就认为leader已经挂了,就发起投票选举新的leader。

在RaftCore的init方法里面

HeartBeat 就是leader的心跳定时任务

MasterElection 就是follower长时间没收到心跳就选举的定时任务


HeartBeat的sendBeat就是具体发送心跳信息了


follower收到心跳请求的时候

receivedBeat 方法会执行 resetLeaderDue();

follower就是根据这个变量判断是否要重新选leader的。

这样就全部串起来了

文章目录
  1. 1. raft的一个基本逻辑是leader隔一段时间给所有的follower发心跳。如果follower长时间没收到心跳,就认为leader已经挂了,就发起投票选举新的leader。
  • HeartBeat 就是leader的心跳定时任务
  • MasterElection 就是follower长时间没收到心跳就选举的定时任务
    1. 1. HeartBeat的sendBeat就是具体发送心跳信息了
  • follower收到心跳请求的时候
    1. 1. receivedBeat 方法会执行 resetLeaderDue();
    2. 2. follower就是根据这个变量判断是否要重新选leader的。
      1. 2.0.1. 这样就全部串起来了