0

現在、モジュロを使用して UUID スペースを分割しているため、データ検索ですべてのサーバーに ping を実行する必要はありません。ただし、モジュロの主な問題はスケーリングです。これは、データストアにノードを追加するには、おそらくデータの移行が必要になるためです。サービスを利用可能な状態に保ちながら、システムにノードを追加するための最良の方法は何だと思いますか?

前もって感謝します!

クリス

4

1 に答える 1

0

ノードを追加するための 2 つのシナリオを確認できます。

  1. 現在のノードのセットは、パフォーマンス要件に対して不十分です。
  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
于 2009-11-10T10:04:49.383 に答える