TiDB 源码阅读系列文章(十八)tikv-client(上)
作者:周昱行 在整个 SQL 执行过程中,需要经过 Parser,Optimizer,Executor,DistSQL 这几个主要的步骤,最终数据的读写是通过 tikv-client 与 TiKV 集群通讯来完成的。 为了完成数据读写的任务,tikv-client 需要解决以下几个具体问题: 如何定位到某一个 key 或 key range 所在的 TiKV 地址? 如何建立和维护和 tikv-server 之间的连接? 如何发送 RPC 请求? 如何处理各种错误? 如何实现分布式读取多个 TiKV 节点的数据? 如何实现 2PC 事务? 我们接下来就对以上几个问题逐一解答,其中 5、6 会在下篇中介绍。 如何定位 key 所在的 tikv-server 我们需要回顾一下之前 《三篇文章了解 TiDB 技术内幕——说存储》 这篇文章中介绍过的一个重要的概念:Region。 TiDB 的数据分布是以 Region 为单位的,一个 Region 包含了一个范围内的数据,通常是 96MB 的大小,Region 的 meta 信息包含了 StartKey 和 EndKey 这两个属性。当某个 key >= StartKey && key < EndKey 的时候,我们就知道了这个 key 所在的 Region,然后我们就可以通过查找该 Region 所在的 TiKV 地址