sofa-jraft线性一致读

raft读

存在网络开销 + 磁盘开销

readIndex

leader节点

  1. 将自己当前的log的commitIndex保存为ReadIndex
  2. 向节点发心跳,半数以上回应
  3. 等待状态执行applyIndex超过ReadIndex
  4. 执行Read请求返回

follower

  1. 向leader请求最新的ReadIndex
  2. leader执行1、2、3过程,然后返回ReadIndex给follwer
  3. follower等待applyIndex超过ReadIndex
  4. 执行Read请求返回

存在网络开销

租约

  1. heat beat前记录start时间,则任期 Start+Election Timeout/Clock Drift Bound 之内, 该时间内选择一个较小的lease租约
  2. 租约时间内可省略readIndex中的heatbeat (2)
  3. leader等待自己的状态机执行applyIndex超过ReadIndex可以安全提供线性一致读

你可能感兴趣的:(sofa-jraft线性一致读)