# 调度的产生与执行

![left](./student-guide/diagram/25-Generation-and-execution-of-schedules-01-01.png)

-------------------------------------------------------------
调度的产生与执行

- TiKV 节点周期性地向 PD 上报 StoreHeartbeat 和 RegionHeartbeat 两种心跳消息。其中 StoreHeartbeat 包含了 Store 的基本信息，容量，剩余空间，读写流量等数据，RegionHeartbeat 包含了 Region 的范围，副本分布，副本状态，数据量，读写流量等数据。PD 将这些信息梳理并转存，构建出集群数据分布情况 ClusterCache

- PD 运行着多个种类的调度器 scheduler，不同的调度器根据 ClusterCache 的信息，从自身的逻辑和需求出发，考虑各种限制和约束后生成待执行的 Operator

- 生成的 Operator 不会立即开始执行，而是首先会进入一个由 Coordinator 管理的一个等待队列。Coordinator 会根据配置以一定的并发从等待队列中取出 Operator 进行执行，执行的过程就是依次把每个 Operator Step 下发给对应 Region 的 Leader

- TiKV 执行完 Operator 后，再通过 RegionHeartbeat 上报给 Coordinator， 并标记为 finish 状态或 timeout 状态，并从执行列表中移除
