Consistent Hashing を使うべきケース、使う必要がないケース

Consistent Hashing が便利なのは、頻繁にノードが上がったり落ちたりする環境で、ネットワークレベルで可用性を保証する必要がある場合。逆に RDBMS のシャーディング等で

  • ノード毎に高可用性を確保している
  • ノード追加/削除は頻繁じゃない

場合は、値域分割が有力な選択肢になる。値域分割であれば、

  • 範囲を指定したイテレーション
  • 障害の影響範囲の局所化 (特定のユーザーが入っているノードだけが落ちるとか)
  • 値域毎の負荷に応じた分割

といったことが可能。Pacific は、このアプローチです。