# `Routing`（PD 一乘一）

![`smart`](RoutingCapabilities_aa_003_20220509.png)

---------------------------------------------------------------------------
因为PD持有TiKV集群的所有信息，它可以为TiDB服务器提供路由功能。

让我们说TiDB服务器想要写入一个值。

1. TiKV 客户端首先从 PD 获取该键属于哪个 Region，然后 PD 返回与该 Region 相关的元数据信息。

2. TiKV 客户端有一个 Region Cache，它缓存元数据，因此不需要每次从 PD 获取。命令然后直接发送到 Region 的 Leader。

可能是区域领导已经更改到另一个TiKV实例，TiKV会返回一个带有新领导地址的NotLeader错误，这时区域缓存将被更新，请求将被重新发送到新的领导。

可能是Region的版本发生了变化，比如说拆分了。此时，key可能已经被移动到新的Region中，TiKV Client会收到StaleCommand错误，因此需要从Placement Driver重新获取信息。
