三地三中心,设置本机房就近读取 Follower Read的一些疑惑

TiDB 6.1.1,三异地三中心
【 TiDB 版本】
查看官方文档,Follower 强一致读
TiKV follower 节点处理读取请求时,首先使用 Raft ReadIndex 协议与 Region 当前的 leader 进行一次交互,来获取当前 Raft group 最新的 commit index。本地 apply 到所获取的 leader 最新 commit index 后,便可以开始正常的读取请求处理流程。

疑问:是否意味着,即便配置了Follower Read + closest-replicas ,本机房客户端请求 本机房的tikv region-follower 还是需要跑回另外一个机房这个region-leader 去拿一遍commit index ,这样流量还是需要跨机房,假设异地中间专线网络时延是30ms,本机房内请求的响应时间还是会超过30ms吗?

疑问二:目前 TSO 分配的主要问题:
TSO 分配由 PD Leader 节点提供,大量请求下会导致 Leader 节点 CPU 利用率增高,影响事务延迟。
PD Follower 节点基本处于空闲状态,系统资源利用率较低。
TiDB 跨数据中心访问 PD Leader 时,数据中心间的延迟导致事务延迟增加。

获取当前Raft group最新commit index + 获取TSO,感觉延时会完全不能接受。

:flushed:

有办法不产生这个 30ms时延吗,本机房内的请求

不拿一下不知道读的region是不是最新的。肯定是得拿的。

之前我压测过,用follower read,QPS、延迟与非follower read比,差太多

follower read QPS/延迟 还是有优势,对吗

follower read QPS/延迟 没优势=-= 性能差太多

开启 follower read ,性能居然更槽糕了??

开启 follower read 坏处:1. 多一次网络 rpc 交互,2 可能数据有延迟需要等
好处是在跨机房下,减少跨网络流量可以本机房读。而且在读热点集中一个 leader 上时是有效果的。

从原理上讲是这样的