一. PD 整体架构
PD 的功能:
- 元数据的存储(解决执行计划如何得知去哪个 region 中获取数据)
- 全局时钟:查询开始时间,事务开始,结束的时间。
- 分配全局 ID 和事务 ID
- 对 region 进行调度(热点 region 的调度处理)
- 提供 label,支持高可用
- 提供 TiDB Dashboard

1.PD 的路由功能
要想知道 ledaer region 在哪个 TIKV,这时候需要问 PD 节点

但这时候有可能 根据 region Cache 获取的 leader region 有误(可能由于热点 region 调度,也可能由于 region 分裂)。这时候请求 TiKV 会返回信息,region 不在这个 TiKV 上,在其它节点,TiKV Client 再访问其它节点,并更新 region cache。 这个过程叫 Back off。
2.PD 的 TSO 分配
TSO (physical time local time) 课程里是叫这个名字。但很奇怪,为什么官网文档 TSO 的命名是 TimeStamp Oracle??

什么是 TSO?

TSO 的分配
首先 TSO 的分配涉及到 TiDB Server 和 PD 组件

但如果此时 TSO 有一百个请求,PD Client 不会 一次次的请求 PD,则 PD Client 会把这一百个请求变成一个批处理请求发送给 PD
相关优化:
PD leader 解决性能问题的方法

PD 的高可用
如果此时 TiDB Server 请求的是 704
此时 PD ledaer 宕机,则切换 leader PD,开始一次新的 3s 计时(即 TiDBServer 请求的 TSO 会有断层,代表此时 PD leader 宕机了) ,即保证不了连续性。
三. 调度
1. 信息调度

2. 生成调度
PD 会关注下面的信息,生成调度(operator)。

3. 执行调度
PD 把调度信息直接发送给 region,让 region 拿着 operator 进行调度

四. Label
如果多个 region 同时失效,则可能会导致数据丢失,这时候可以认为的调整 region 的分布。这时候需要用到 Label。这和 Oceanbase 的 Zone 的逻辑概念有些类似。
给 region 打标签需要配置两个组件,分别是 TiKV 和 PD
给 region 打标签后 PD 就知道 region 在哪个数据中心,哪个机房的哪个机架。
