我的6.824 课程 Pass,欢迎STAR
- commitIndex是volatile的,不需要persist。OMG,这一点会影响之后的一些操作
- 需要考虑那些状态需要persist,一个node恢复以后,只恢复必要的自身相关的状态就好,然后重新进入循环
- 既然需要重新进入循环,那样的话对于leader,就不需要没有commit的多余log了。 这样不行啊,前一个term的log可能已经完成replicate的过程了,但是还么有进行commit操作,这时需要保留到下一个term,然后通过新命令或者no-op command进行commit
- AER中可以添加一些额外的字段帮助leader快速的back up,比如lastLogIndex,然后leader直接从lastLogIndex进行back up(仍然需要使用跨term的方法进行再优化)。commitIndex、TermOfArgsPrevLogIndex,后者由于log backup 的过程中的优化。
- **对于leader刚开始时,commitIndex当有新的命令过来时再进行更新,这也是figure8所要求的:不通过count replica 的方式对上一个term的log进行commit。**对于follower只有在leader的AE过来时,才更新commit。
- 论文对follower的log缺失(AER return false)back up 给的优化办法是一次跳到前一个term的log,为什么不直接让AER携带这些信息呢