Raft 领导者在任期开始时承诺无操作条目

Chu*_* Li 4 leader distributed-computing consensus raft

最近读了一篇关于Raft共识算法的论文。新的领导者不知道当前的提交索引是什么。

无操作如何 解决这个问题?

Kri*_*itk 5

在 Raft 中,新当选的领导者(意味着他在集群中获得了大多数选票。这意味着他的日志至少与授予他选票的节点的日志一样是最新的)不允许直接提交( I) 前任领导人的条目。

然而他可以隐式地做到这一点。如果他将新命令附加到日志中并在其他节点上复制该命令,那么一旦大多数节点响应“ok”,他就可以认为该命令已提交。这意味着所有先前的命令也都已提交,并且可以传递到状态机(如果尚未这样做)。

现在,如果您向日志添加一个无操作条目,您就可以隐式提交以前的命令,从而找出当前的commitIndex


(I):标记命令可以安全地传递到状态机。一旦命令被复制到集群中的大多数节点上,就会发生这种情况。