現在、モジュロを使用して UUID スペースを分割しているため、データ検索ですべてのサーバーに ping を実行する必要はありません。ただし、モジュロの主な問題はスケーリングです。これは、データストアにノードを追加するには、おそらくデータの移行が必要になるためです。サービスを利用可能な状態に保ちながら、システムにノードを追加するための最良の方法は何だと思いますか?
前もって感謝します!
クリス
現在、モジュロを使用して UUID スペースを分割しているため、データ検索ですべてのサーバーに ping を実行する必要はありません。ただし、モジュロの主な問題はスケーリングです。これは、データストアにノードを追加するには、おそらくデータの移行が必要になるためです。サービスを利用可能な状態に保ちながら、システムにノードを追加するための最良の方法は何だと思いますか?
前もって感謝します!
クリス
ノードを追加するための 2 つのシナリオを確認できます。
2 番目のケースでは、UUID に時間ベースのコンポーネントがある場合は、年齢による分割で十分な場合があります。
しかし、より興味深いのは最初のケースだと思います。データの使用法が変化するにつれて、作業を十分に分散するためにパーティション分割を変更する必要があることがわかります。その場合、一部のパーティションを新しいノードに移動する以外に選択肢はありません。定義により、現在のノードの se は過負荷になっています。問題の範囲についてははっきりしていません。実際の移行が面倒なのでしょうか? それとも、クライアントがデータのために新しい場所に突然移動する必要があるのでしょうか?
ある種の遅延検索アプローチを実装できますか?
Client initialises with current table of servers,
(hence knows the modulus to apply to uuid and can route on that basis)
Servers decide to reorganise themselves
Client gets a request, calclulates a now invalid modulus
Attempts to access the data
response says "Gone Away" **AND** gives the new server info
Client can now recompute the location