实验环境
OS: Ubuntu 18.04
Editor: VSCode
语言: Go 1.13
实验代码版本: Mit 6.824 Spring 2018
笔记记录了一些思路和遇到的问题。
对Raft协议的一些疑问的解答
https://segmentfault.com/a/11...
Lab1
Lab2
好的设计是成功的一半. 起初,笔者一开始用了很多goroutine
+buffer channel
来完成状态切换,定时器重置等工作。此外还增加一些代码来收到信号时,主动关闭goroutine, 最终代码凌乱冗长。
后来参考了Mushroom的设计,使用状态机模式重构了代码,减少不必要的channel,select和goroutine,尽量使用普通函数去完成功能。
重构之后顺利通过Lab2A, Lab2B(100次全部通过)。
仔细阅读论文,发现自己对论文的理解还是很肤浅,没有faithfully follow the paper
,有很多细节都没有实现到位。
于是一边阅读论文,一边参考Students guide来修改不正确的代码. Student's guide里面包含了很多学生们错误的实现,是很有帮助的参考资料。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。