Closed qyvlik closed 4 years ago
term相同时,会比较log的term和index。
@wenweihu86 我在实现 raft 的时候,有如下几个疑问:
在这个情景下,集群完成 Leader
更换,但是集群的 term(1234) 没有变更,这对于集群来说,是否会有问题?
如果让 Leader
直接拒绝 相同 term 的投票请求,又有可能丢失日志。
candidate在发起投票时,会把currentTerm++的,所以不会出现candidate和leader的term一样大的。
@wenweihu86 谢谢解答,我再去看看论文和其他人的实现
@qyvlik 你不是搞Qt的吗...
Leader 是否应该拒绝相同 term 的投票请求 ? @wenweihu86 您的实现 RaftConsensusServiceImpl.requestVote 的实现: RaftConsensusServiceImpl.java#L67 是不对
Leader
做特殊处理。例如: 当处理 requestVote 的 Node-A 的状态是
Leader
,且Candidate
(Node-B) 的 term (1234) 与Leader
的 currentTerm(1234) 相等。 这里有个疑问,如果 Node-A 通过了投票(符合投票要求),并 stepDown 为Follower
, 且 Node-B 成功当选Leader
,那么集群中就已经完成Leader
更换,但是集群的 term(1234) 没有变更,这对于集群来说,是否会有问题? 让Leader
直接拒绝 相同 term 的投票请求是否会更好?