# 调度：生成调度表

+ 平衡
  + 领导者
  + 地区
+ 热带地区
+ 集群拓扑
+ 缩容
+ 失败恢复
+ 区域合并

------------------------------------------------------------
不同的调度器根据自己的逻辑和要求生成要执行的操作器，考虑各种限制和约束。让我们先解释一下操作器是什么。操作器是应用于区域的一系列操作，用于某种调度目的。例如，“将区域2的Leader迁移到Store 5”，“将区域2的副本迁移到Store 1，4，5”等。

运算符可以通过PD通过计算生成，或者可以通过外部API手动创建。

以下是代表性的调度方法：

平衡
- 将区域均匀分布到集群中的所有商店。

热带地区
- 热点调度将尝试同时散布热点区域的同行和领导者以进行写热点；对于读热点，由于只有领导者承受读取压力，热点调度将尝试散布热点区域的领导者。详情请参考以下章节。

集群拓扑
- 让PD感知不同节点的拓扑结构，是为了尽可能通过调度分散不同Region的副本，以确保高可用性和灾难容错性。例如，如果集群有3个数据中心，最安全的调度方法是将Region的3个Peer放在不同的数据中心，这样任何数据中心在失效时都可以继续提供服务。

缩容
- 按比例缩减指的是准备将一个Store离线，通过命令将其标记为离线状态，此时PD将通过调度将要离线的节点上的区域迁移到其他节点上。

故障恢复
- 故障恢复指的是当一个Store出现故障无法恢复，而在该Store的Region上分布的Peer就会缺少副本。此时，PD需要在其他节点上补充这些Region的副本。

区域合并
- Region合并指的是安排相邻的小Region进行合并，以避免在数据删除后，大量小Region或者甚至是空Region消耗系统资源。
