Election restriction
RequestVote RPC实现了这种限制:RPC包括了候选者log的信息,如果voter自己的日志比candidate的更新,则voter会拒绝掉它的投票。
比较日志哪个更新的算法如下,假设有
(iterm1, logEntryIndex1) 和 (iterm2, logEntryIndex2) 这两个二元组。
如果iterm 1 > iterm2 , 则 (iterm1, logEntryIndex1) 比 (iterm2, logEntryIndex2) 更新;
如果iterm1 = iterm2,然后比较logEntryIndex,如果 logEntryIndex1 > logEntryIndex2,则 (iterm1, logEntryIndex1) 比 (iterm2, logEntryIndex2) 更新。
Raft使用投票过程来实现:一个candidate的log只有包含所有commited entries才能从投票中获胜。
RaftServerProtocol
RaftServerProtocol协议类:
主要定义了4种raft的核心RPC。
public interface RaftServerProtocol {
enu