TiDB PCTA认证备考笔记-04-PD
Placement Driver(PD)
1.PD的架构与功能
Store:TiKV实例
Region:每个Region维护一段连续的数据默认96M
Peer:每个Region的一个副本都被称为一个peer(特指raft中的成员)
Leader和Follower:只在Leader节点读写
Raft Group:leader的peer和Flollower构成
-
PD的主要功能
- 整个集群TiKV的元数据存储
- 分配全局ID和事务ID
- 生成全局时间戳TSO
- 收集集群信息进行调度
- 提供label,支持高可用
- 提供TiDB Dashboard
-
路由功能
TiDB Server中的Executor在把执行计划发给TiKV Client后需要知道Region的位置,这个时候则需要PD去调度,发送Region位置给TiKV Client,去哪一个TiKV节点去取数据。这时候如果每次都让PD去调度就有些不合理了,所以有了Region Cache模块,在从PD获取了位置之后,缓存在CACHE中,下次就可以直接去读取数据(有可能Leader这期间会漂移到其他节点,这个时候会返回说明这时Leader真实的位置)
2.TSO
- TSO=physical time logical time
- 分配过程
- 1.请求者(TiDB Server)请求TSO,向PD Client(SQL/事务)
- 2.立即返回tsFuture
- 3.与第二步同时,异步向PD Leader请求TSO
- 4.在第二步接收到tsFuture后编译解析,然后进入tsFuture.wait状态
- 5.PD分配TSO给PD Client
- 6.TiDB Server获得TSO
(这里不可能在大量请求时,一个一个发送请求给PD,这时会采用批处理方式,多少时间内发送一批请求)
PD也需要持久化TSO,所以也需要IO
时间窗口解决了上面的问题,3秒内的缓存值交由TSO使用,一个队列先到先得(预分配)这时的磁盘IO也就变成了3秒一次
PD Leader如果有宕机,Raft会赶快选举出新的Leader,这时新选举的Leader并不会知道上一个Leader到了哪里,所以会直接跳过预分配的3秒,在之后重新开始。
3.调度信息收集
Store Heartbeat:TiKV信息,容量剩余情况
Region Heartbeat:副本,读写流量,分布情况
调度流程:信息收集-生成调度-执行调度
4.Label与高可用
标识机柜,数据中心,以及那个机柜,形成高可用
PD和TiKV都参与