RAFT实现之State Persist

测试通过
bc358b4791de99cc38bdfb22610f9d47.png
Raft 需要持久化存储的信息为

  1. current Term
  2. votedFor
  3. Log[]

只要这三个值有变化,就存储到磁盘

主要是以下四种情形
1. 成为candidate/follower时(currentTerm和votedFor变化)
2. follower投完票时(votedFor变化)
3. appendEntries RPC 更改log时(log更改)
4. Start()追加leader日志时(log更改)

一定要用go test -race 来测有没有竞争!

复制日志加速优化十分重要!!要不然2C的TestFigure8Unreliable2C无法通过!

posted @ 2020-05-18 09:57  skyliulu  阅读(372)  评论(0编辑  收藏  举报