在筏头领袖选举中,领导者对候选人的RequestVote rpc的回应如何?

时间:2017-12-15 07:05:32

标签: raft leader

我正在读筏纸。

到requestvote rpc,

  

接收器实施:   1.如果术语< 1,则回复false currentTerm(§5.1)   2.如果votedFor为null或candidateId,则候选人的日志为   至少与接收者的日志,授权投票一样最新(§5.2,§5.4)

在某些情况下,候选人的期限等于领导者'currentTerm,那么领导者如何从候选人那里回应RequestVote rpc?

1 个答案:

答案 0 :(得分:2)

让我们以更人性的方式区分它们:

  1. 如果投票来自旧版(term < currentTerm),请忽略它。
  2. 如果我们没有在这个词中投票(votedFor is null),或者如果它投票给我们在这个词中最后一次投票的同一位候选人(votedFor == candidateId),只要候选日志是最新的,就批准投票。
  3. 请记住,领导者在特定任期内投票支持自己。

    这意味着对于term == currentTerm,领导者将votedFor等于自己。这不是空的,因此它授予此投票的唯一方法是candidateId本身 - 即,它在当前期限内为自己投票。在所有其他情况下,它不会批准投票。

    要记住的高级别事项(事实上,所有这些中的关键不变量)是服务器永远不会在同一个词中多次投票。一旦它为一个任期投票,它就是最终的。并且由于领导者为自己投票,当它收到同一期限的其他请求时,它不会授予它。