Raft 领导者在任期开始时提交了一个 no-op entry

Raft leaders commit a no-op entry at the beginning of their term

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

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

In Raft a new elected leader (implies that he received a majority of votes in the cluster. That means his log was at least up-to-date as the log of授予他选票的节点)不允许直接提交 (I) 以前任期的条目 - 以前的领导者。

不过他可以含蓄地做到这一点。如果他将一个新命令附加到日志并在其他节点上复制该命令,他可以认为,一旦大多数人以 ok 响应,该命令已提交。这意味着所有先前的命令也已提交,并且可以传递给状态机(如果尚未这样做)。

现在,如果您将 no-op 条目添加到日志中,您就可以隐式提交以前的命令,从而找出当前的命令 commitIndex.


(I):标记一条命令可以安全地传递给状态机。这是在集群中的大多数节点上复制命令后的结果。