[持续更新中…]
文章目录
前置
1. 链接
2. 环境问题
lab 中介绍 实验代码只能运行在 linux, Mac 环境下
windows 下可以用 wsl 能成功 run 起来代码
3. 建议
a. 打日志时最好将毫秒时间戳输出 时间信息很重要
b. 单个 test 最好多 run 几次,不然会凑巧通过 实验原Hint提示如下:
events are non-deterministic, and you may get lucky and pass the tests,
even though your code has bugs.
Typically running the test several times will expose those bugs.
c. 如果某个测试一直不通过可以看看测试代码的逻辑
d. 课程助教的 blog 可以仔细看一遍 遇到的很多问题都能从中找到答案
在做 2C 的时候就遇到 node 频繁成为 leader 的情况,最后在 blog 里找的解决方案
lab-2A leader election (moderate)
1. 思路
1. 主要流程
2A 的主要任务就是参照 raft 论文中 Figure2 ,将图中涉及的各个变量 rpc 接口定义好
2. 选举超时定时器实现思路
新增一个 goroutine 每隔 rand(150~300) -> T[ms], check 在上个 Tms内是否有来自其他 node 的 RPC 请求, 如果有继续循环 没有的话开始