到requestvote rpc,
接收器实施: 1.如果术语< 1,则回复false currentTerm(§5.1) 2.如果votedFor为null或candidateId,则候选人的日志为 至少与接收者的日志,授权投票一样最新(§5.2,§5.4)
在某些情况下,候选人的期限等于领导者'currentTerm,那么领导者如何从候选人那里回应RequestVote rpc?
答案 0 :(得分:2)
让我们以更人性的方式区分它们:
term < currentTerm
),请忽略它。votedFor is null
),或者如果它投票给我们在这个词中最后一次投票的同一位候选人(votedFor == candidateId
),只要候选日志是最新的,就批准投票。请记住,领导者在特定任期内投票支持自己。
这意味着对于term == currentTerm
,领导者将votedFor
等于自己。这不是空的,因此它授予此投票的唯一方法是candidateId
本身 - 即,它在当前期限内为自己投票。在所有其他情况下,它不会批准投票。
要记住的高级别事项(事实上,所有这些中的关键不变量)是服务器永远不会在同一个词中多次投票。一旦它为一个任期投票,它就是最终的。并且由于领导者为自己投票,当它收到同一期限的其他请求时,它不会授予它。