测试通过
Raft 需要持久化存储的信息为
- current Term
- votedFor
- Log[]
只要这三个值有变化,就存储到磁盘
主要是以下四种情形
1. 成为candidate/follower时(currentTerm和votedFor变化)
2. follower投完票时(votedFor变化)
3. appendEntries RPC 更改log时(log更改)
4. Start()追加leader日志时(log更改)
一定要用go test -race 来测有没有竞争!
复制日志加速优化十分重要!!要不然2C的TestFigure8Unreliable2C无法通过!