PD(Placement Driver),集成了ETCD, ETCD的Raft保证了数据的一致性;
PD作用
- 整个集群TiKV元数据的存储
- 分配全局ID和事物ID
- 生成全局时钟TSO-事物开始时间、提交时间等
- 搜集集群信息进行调度
- 搜集Label功能支持高可用
- 提供TiDB Dashboard功能
TSO = physical time + logical time
physical time 精确到ms, logical time 将1ms分成了 262144个TSO
TSO请求的时候,为了避免过于频繁地请求PD的TSO时间戳,从而造成PD负载过大,每次分配TSO的时候会一次性分配未来3s的TSO给TiDB Server,从而提升PD的处理性能;
PD的调度
- Balance:
- Leader是否均衡地分布在所有TiKV上,
- Region,不要让某些TiKV过分地积攒region
- hot region: 写热点的region进行打散
- 集群拓扑
- 扩缩容
- 故障恢复
- Region merge: 空region合并
Label高可用
PD可以让同一个Group中的2个Region落在一个TiKV中,但是无法保证这些Region分布在哪个机房或者机柜中; 此时需要Label打标来实现;
- 由于有Raft功能,所以故障任意一台Server都不影响Region的使用;
- 机柜故障:如果Rack4故障,将会影响Region1的数据;
- 机房故障:如果DC1故障,将会影响Region2的数据;
- 任意机房或者机柜的故障都不会影响Region3的数据;
Label需要在PD和TiKV实例中进行配置
isolation-level表示隔离级别,如果为zone表示一个region的3个副本都必须是在不同的zone(机房)