【TiKV / HTAP 内核】PD 元数据与调度:心跳、算子与调度器
内容提要
PD(Placement Driver)作为TiKV的调度中心,通过心跳机制收集集群状态,生成调度建议(Operator),并发送给Region Leader。调度过程异步,Leader可选择执行或跳过建议。PD使用Store心跳提供宏观视图,Region心跳提供精确位置。调度的基本单元是Operator,主要目标是负载均衡和副本管理,决策受限于放置规则和调度限制,以确保系统稳定性。
关键要点
-
PD(Placement Driver)通过心跳机制收集集群状态,生成调度建议(Operator),并发送给Region Leader。
-
调度过程是异步的,Leader可以选择执行或跳过建议。
-
PD使用Store心跳提供宏观视图,Region心跳提供精确位置。
-
调度的基本单元是Operator,主要目标是负载均衡和副本管理。
-
调度决策受限于放置规则和调度限制,以确保系统稳定性。
-
PD集群通过两种心跳(Store心跳和Region心跳)维护集群视图。
-
调度器生成的算子是建议,Region Leader可以根据自身状态选择是否执行。
-
PD默认启用三个调度器,分别用于均衡Leader数量、副本存储量和分散读写热点。
-
调度过程受到窗口限制和优先级的控制,以维护系统稳定性。
-
PD的调度机制与CockroachDB的去中心化调度存在架构上的分歧。
延伸解读
PD的调度机制与实时性
PD的调度机制是基于心跳驱动的异步过程,意味着调度建议并不会立即执行。Region Leader可以根据自身状态选择是否执行这些建议,这可能导致调度延迟。因此,运维人员需要关注心跳周期对调度效率的影响,确保系统在负载高峰时能够及时响应。
调度器的独立性与局部优化
PD默认启用多个调度器,每个调度器独立打分并生成候选算子。这种设计虽然提高了灵活性,但也意味着调度决策是局部的,而非全局最优解。运维人员在进行系统优化时,应考虑不同调度器的优先级和评分依据,以实现更有效的负载均衡。
心跳机制的双重角色
PD通过Store心跳和Region心跳收集集群状态,前者提供宏观视图,后者则提供精确位置。这种双重心跳机制使得PD能够快速响应状态变化,但也要求运维人员定期检查心跳配置,以确保信息的及时性和准确性,避免因心跳延迟导致的调度失效。
延伸问答
PD的心跳机制是如何工作的?
PD通过Store心跳和Region心跳收集集群状态,Store心跳提供宏观视图,Region心跳提供精确位置。
调度的基本单元是什么?
调度的基本单元是Operator,它由多个OperatorStep组成,主要用于负载均衡和副本管理。
Region Leader如何处理PD发送的调度建议?
Region Leader可以选择执行或跳过PD发送的调度建议,具体取决于其当前状态。
PD默认启用哪些调度器?
PD默认启用三个调度器,分别用于均衡Leader数量、副本存储量和分散读写热点。
PD的调度决策受哪些限制?
调度决策受限于放置规则和调度限制,以确保系统的稳定性。
PD的调度机制与CockroachDB有何不同?
PD的调度机制是中心化的,而CockroachDB采用去中心化的调度方式,二者在架构上存在显著差异。