自分の理解を深めるためにまとめてみました。19章の続きです。
20章 データセンターでのロードバランシング
サブセットの設定によるコネクションプールの制御
適切なサブネットを選択するためには、サブセットの大きさ(各クライアントが接続するバックエンドタスク数)と選択アルゴリズムが大切である。以下のような場合にはサブネットを大きくするとよい。
- クライアントがバックエンドよりもはるかに少数の場合
- クライアントのジョブにおいて、負荷の不均衡が頻繁に生じる場合
サブセットの選択アルゴリズム
当初はランダムな選択を行っていたが効率的に処理が分散されなかったため、決定的なアルゴリズムが採用された。そのアルゴリズムではクライアントをラウンドごとにグループ化し、各ラウンドはシャッフルされた同じリストを使用する。
ロードバランシングのポリシー
方法としては以下がある。
- 単純なラウンドロビン
- ただ順番にラウンドロビンさせるだけ。タスクやサーバの大きさにばらつきがあるため、不安定になりやすい。
- 最小負荷ラウンドロビン
- アクティブなタスク数が最も少ないサーバに振り分けを行う。一見ベストな方法に見えるが、何かしらの原因でエラーを返してしまっている場合に、そのサーバにタスクが集中してしまうというリスクがある。(エラーページは通常のページよりもレスポンスが速い場合が多いので)
- 重み付きラウンドロビン
- やや複雑な方法ではあるがベストな方法。バックエンドから提供される情報(クエリとエラーのレート、CPU使用率等)を判断のプロセスに取り入れている。
(21章に続く)