nacos1.4x reft协议在线流程图
http://assets.processon.com/chart_image/637b1c1b1efad454983d6afd.png
reft选举流程:
1.nacos server 启动执行RaftCore.init() ,然后加载持久化机制 raftStore.loadDatums,并设置周期
2.定时任务执行集群leader 选举 MasterElection 任务
3.MasterElection 制定规则,设置随机15-20s 任务,重置心跳时间,然后发起leader投票
4.sendVote() 将投票信息发送给其他集群节点,收到返回结果,最后决定谁为leader
5.GlobalExecutor.registerHeartbeat(new HeartBeat()); 定时任务执行集群节点心跳的heartbeat任务
6.sendBeat() 把本地数据的key 打包成 gzip 数据包发送给其他节点,其他节点收到之后 会判断是否为leader 服务,否则拒绝解析数据, 如果为leader节点 则将自己更该为follower 节点,
7.其他节点更新leader信息,通过心跳机制通知其他节点,
8.follower 节点接受到 key 之后放入本地key 的map 中,然后本地key 默认值为 0 ,接收到的key 默认值为 1 ,然后进行数据校验,进行key 的更新或者删除
9.HttpClient.asyncHttpGet 根据接收到的key 再去leader 拉取具体信息