# スケジューリング：スケジュールの生成

+ バランス
  + Leader
  + リージョン
+ ホットリージョン
+ クラスタ・トポロジー
+ スケールイン
+ 失敗からの回復
+ リージョンの統合

------------------------------------------------------------
異なるスケジューラーは、さまざまな制約や制限を考慮して、自身のロジックや要件に基づいて実行すべきオペレーターを生成します。まずオペレーターとは何かを説明しましょう。オペレーターとは、あるスケジューリングの目的を果たすためにリージョンに適用される操作の集合体です。例えば、「リージョン2のLeaderをストア5に移行する」、「リージョン2のレプリカをストア1、4、5に移行する」などです。

PDを介して計算によってオペレーターを生成することができますが、外部APIを介して手動で作成することもできます。

以下が代表的なスケジューリング方法です：

バランス
- クラスタ内の全てのストアにリージョンを均等に配布します。

ホットリージョン
- ホットスポットスケジューリングでは、ホットリージョンのピアとLeadersを同時に分散させるようにして、ホットスポットの書き込みを試みます。ホットスポットの読み取りについては、Leadersが読み取り負荷を担うため、ホットリージョンのLeadersを分散させるようにします。詳細については、以下の章を参照します。

クラスタ・トポロジー
- PDが異なるノードのトポロジーを感知することで、スケジューリングを通じて、可能な限り多くの異なるリージョンレプリカを分散させ、高い可用性と災害耐性を確保します。例えば、クラスタが3つのデータセンターを持っている場合、最も安全なスケジューリング方法は、3つのリージョンのピアを異なるデータセンターに配置することで、データセンターが故障してもサービスを継続できるようにします。

スケールイン
- スケールインとは、コマンドを使用してストアをオフライン状態にマークし、PDがノード上のリージョンをオフラインにするためのスケジューリングを行う準備をすることを指します。

故障復旧
- ストアが障害を起こして復旧できなくなった場合をフェイルオーバーと呼びます。そのストアのリージョンに配置されているピアがレプリカが不足してしまうことになります。このとき、PDは他のノードからこれらのリージョンのレプリカを補充する必要があります。

リージョンの統合
- リージョンマージとは、隣接する小さなリージョンをスケジューリングして、多くの小さなリージョンやデータ削除後の空のリージョンによるシステムリソースの消費を避けるためのプロセスを指します。
