【课程问题】TiDB 数据库核心原理与架构 [TiDB v6] :TiKV- 读写与 Coprocessor

对于这个问题,以下是我对这个图片过程的理解,如有错误,还请大家帮忙指正。

  1. 绿session在10:00时刻对1-95对应的raft log index对应的修改进行了commit操作,但是raft kv 还没有apply到 1-95
  2. 黄session在10:05时刻发起读请求,获取raft log index:1-95对应的内容,发起如下流程:
    1. 查看当前时刻raft log index 最新值(最大值),并保存在当前读取session的本地,此raft log index就是所谓的ReadIndex
    2. 在TiKV中,所有读写操作都在leader节点上进行,所以会进行一次当前leader的判断,通过heartbeat进行,收到多数节点的回应后,当前节点会认定自己仍然是leader,才会继续执行后续操作
  3. 绿session在10:08时刻,等到了TiKV 完成对写操作的Raft log index 1-95的apply(持久化到RocksDB KV中)
  4. 黄session在10:09时刻,等到了TiKV 完成对本地缓存的ReadIndex对应的raft log index 的apply,此时符合线性一致性读的条件,读取1-95对应的Raft KV值,并返回结果给客户端
1 个赞