# PD 主要功能

__*PD 功能*__

+ 整个集群 TiKV 的元数据存储
+ 分配全局 ID 和事务 ID
+ 生成全局时间戳 TSO 
+ 收集集群信息进行调度
+ 提供 label, 支持高可用
+ 提供 TiDB Dashboard
-------------------------------------------------------------
`PD` 的主要功能如下:

整个集群 `TiKV` 的元数据存储
- 包括, `key range` 对应的 `Region`, `Region` 所在的 `TiKV` (`store`) 等信息都是存储到 `PD` 中的。
- 例如, `TiDB` server 就是从 `PD` 获得路由信息之后, 到相关 `TiKV` 中去存取数据的。
- 另外, 包括 `TiKV` 的拓扑信息, `label` 信息也都是存储在 `PD` 中的, 后面还会进行详细介绍。

分配全局 `ID` 和事务 `ID`
- 我们使用的 `store` ID, `region` ID, `peer` ID, `table` ID 和 `index` ID， 等等全局 ID 和分布式事务的事务 ID 也都是由 `PD` 分配的。

生成全局时间戳 `TSO`
- `TSO` 是一个全局的时间戳, 用于保证数据库中事务的顺序, `PD` 的一个非常重要功能就是生成 `TSO`。

收集集群信息进行调度
- `TiKV` 节点周期性地向 `PD` 报告集群的状态, `PD` 负责根据相关状态进行 `Region` 在 `TiKV` 节点间的调度工作, 具体内容我们在后面进行介绍。

提供 `TiDB Dashboard` 服务
- 综上, `PD` 相当于 `TiDB` 数据库的总控中心, 在后面的章节中我们会着重介绍生成全局时间戳 `TSO` 和调度两个功能。