5)选举超时

【用例TestCandidateResetTermMsgHeartbeat】

1)c.randomizedElectionTimeout=13

2)调用13次raft.tick()

3)tickElection里检测出pastElectionTimeout

r.electionElapsed》= 13

4)触发选举

r.Step(pb.Message{From: r.id, Type: pb.MsgHup})

 

【收到心跳请求时置为0】

func stepFollower
case pb.MsgHeartbeat:
r.electionElapsed = 0

 

【谁来调用tick】

node的run协程

(n *node) run()

  case <-n.tickc:

   n.rn.Tick()

【谁来给node.tickc发消息】

node->start方法里的协程

 

 

posted @ 2022-12-18 10:53  stupidstan2019  阅读(27)  评论(0)    收藏  举报