多くのユーザーが 1 つのサーバーに接続し、ハッシュを使用してキーと値のペアを格納するインフラストラクチャを考えています。
このようなサーバーは多数存在し、それぞれが独自のユーザーのキーと値のペアを格納しています。キーが衝突しないことを前提としています。
サーバー S1 のユーザー U1 は、サーバー S2 に存在するキー K2 を持つオブジェクトを検索する可能性があります (ユーザーはまだこれを知りません)。キーを server_addr にマップするには、ある種の分散ハッシュ テーブルが必要なので、そのサーバーにオブジェクトを問い合わせることができます。
Tapesry、Chord など、このような DHT はたくさんあります。このフェアのようなシステムをどのように作成するかを考えていました。
たとえば、3 台のサーバーを備えたシステムでは、サーバー S1 に 1000 人のユーザーがいて、S2 に 2 人のユーザーがいて、S3 に 5 人のユーザーがいるとします。ユーザーがそれぞれ 10 個のオブジェクトを作成し、キー スペースを均一に分散すると仮定すると、サーバー S2 と S3 はそれぞれ約 3500 個のキーを格納します。
私は、S1 が DHT 内のキーの公平な共有に責任を持つ方法が必要です。
私が持っていたアイデアの 1 つは、監査システムのようなもので、各ピアが DHT に保存しているキーの数を他のすべての人に尋ね、そのキー スペースの一部に対しても責任があるかどうかを確認します。
ただし、これにより、各ノードの消費量を取得するために帯域幅が大量に使用されます。
他のアイデアはありますか?