raft读
存在网络开销 + 磁盘开销
readIndex
leader节点
- 将自己当前的log的commitIndex保存为ReadIndex
- 向节点发心跳,半数以上回应
- 等待状态执行applyIndex超过ReadIndex
- 执行Read请求返回
follower
- 向leader请求最新的ReadIndex
- <font color=red>leader执行1、2、3过程</font>,然后返回ReadIndex给follwer
- follower等待applyIndex超过ReadIndex
- 执行Read请求返回
存在网络开销
租约
- heat beat前记录start时间,则任期 Start+Election Timeout/Clock Drift Bound 之内, 该时间内选择一个较小的lease租约
- 租约时间内可省略readIndex中的heatbeat (2)
- leader等待自己的状态机执行applyIndex超过ReadIndex可以安全提供线性一致读
网友评论