⭐⭐⭐ Spring Boot 项目实战 ⭐⭐⭐ Spring Cloud 项目实战
《Dubbo 实现原理与源码解析 —— 精品合集》 《Netty 实现原理与源码解析 —— 精品合集》
《Spring 实现原理与源码解析 —— 精品合集》 《MyBatis 实现原理与源码解析 —— 精品合集》
《Spring MVC 实现原理与源码解析 —— 精品合集》 《数据库实体设计合集》
《Spring Boot 实现原理与源码解析 —— 精品合集》 《Java 面试题 + Java 学习指南》

摘要: 原创出处 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. 这样就全部串起来了