第23章: プレースメント

プレースメントは、物理インフラストラクチャのどこにデータや計算を配置すべきかを決定します。良いプレースメントはレイテンシーを削減し(データを消費者の近くに配置する)、信頼性を向上させ(障害ドメインをまたいでレプリカを分散する)、リソース使用率を最適化します(マシン間の負荷を均衡させる)。

データプレースメント戦略にはハッシュ(ハッシュ関数を使用してデータをサーバーに決定論的に割り当てる)、レンジパーティショニング(連続するキー範囲をサーバーに割り当てる)、ディレクトリベースのプレースメント(各キーについてルックアップサービスに問い合わせる)が含まれます。ディスカバリサービスはサービスプレースメントのためのシンプルなディレクトリとして機能しますが、データレベルではなくサービスレベルで動作します。

コンシステントハッシュはデータプレースメントにとって特に重要な技術です。サーバーとキーの両方を仮想リング上の位置に割り当て、各キーはリング上で時計回りの次のサーバーに保存されます。サーバーが追加または削除された場合、キーのごく一部だけが再割り当てされ、データ移動を最小限にします。

プレースメントは障害ドメインを考慮する必要があります:障害が相関する物理的または論理的な境界です。ラック障害はラック内のすべてのサーバーに影響します。電源障害は電源ドメイン内のすべてのラックに影響します。建物の障害は建物内のすべての電源ドメインに影響します。重要なデータのすべてのレプリカを同じラックに配置するとレプリケーションの目的が失われます。

リージョンは最大の障害ドメインです。地理的リージョンにまたがって分散することで、データセンター全体に影響する災害から保護します。第24章: Geoレプリケーションでは、私たちのシステムが各リージョンでフルスタックを実行し、フェデレーテッドディスカバリとWALベースのレプリケーションがギャップを埋める方法を説明します。