Lab2B

Lab2b 是实现 Raft 中的 log 部分,这是 Raft 的最关键的一环,它可以说是 Raft 的基础。正是这种 log 机制,才使得复制状态机的想法实现,Raft 才具有了容错能力。

Log 的基本思想是把客户端的一系列指令存储在各个服务器上,等到指令被认定安全时,各个服务器再逐一应用到自身上,并返回给客户端相应的回答。

其实无论是论文还是实验给与的提示都不是很多,强烈建议去看看我翻译的 Raft 作者亲授的视频,对 log 这部分讲述的十分清晰。以下是 hints。

hints

  • 处理好 matchIndex 这个数组,我的很多错误都是出现在这里,注意一下如何修改 matchIndex 中 leader 的那部分。

  • 其实提示上也说了,当 applymsg,最好是有一个持久的线程工作,用条件变量处理同步问题。

  • 如果 2A 写的框架不错的,这个 lab 也就费点脑子,想清楚逻辑辅以官方网站,真的很直觉,不难写。

最后更新于