从零开始学TiDB(6)深入学习Placement Driver(PD)
一.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在哪个数据中心,哪个机房的哪个机架。