【TiKV / HTAP 内核】PD 元数据与调度:心跳、算子与调度器

💡 原文中文,约10800字,阅读约需26分钟。
📝

内容提要

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采用去中心化的调度方式,二者在架构上存在显著差异。

🏷️

标签

➡️

继续阅读