最近我读了一篇关于Raft一致性算法的论文。新领导者不知道当前的提交索引是什么。
no-op 如何解决此问题?
答案 0 :(得分:1)
在Raft中,一位新当选的领导者(暗示他在集群中获得了大多数选票。这意味着他的日志至少最新作为授予他的节点的日志他的投票不允许直接提交(I)之前条款的条目 - 前任领导人。
然而,他可以隐含地这样做。如果他将新命令附加到日志并在其他节点上复制该命令,则只要大多数响应ok,该命令就会被认为是已提交的。这意味着隐含所有以前的命令都已提交,如果尚未传递,则可以传递给状态机。
现在,如果在日志中添加 no-op 条目,则可以隐式提交以前的命令,从而找出当前的 commitIndex 。
(I):将命令标记为可安全传递给状态机。只要在集群中的大多数节点上复制命令,就会这样。