ご存知かもしれませんが、コンシステント ハッシュは、DHT を扱う場合に優れたアイデアです。主なアイデアは、新しいノードが追加または削除されたときにあまり影響を受けないようにすることです。
元の論文から:
マシンが一連のキャッシュに追加または削除された場合、新しいキャッシュに移動する必要があると予想されるオブジェクトの割合は、キャッシュ間でバランスの取れた負荷を維持するために必要な最小値です。
解決策は素晴らしいですが、鍵の配布がうまくいかないという現象があります。これを解決するために、元のノードのレプリカがランダムに配布されます。そのソリューションは非常にうまく機能します。確認したい場合は、このチャートを見てください。
わかりました、うまくいくようです。しかし、誰も言及していないことを私は考えていました。
1 つのノードが追加 (または削除) されるとどうなりますか? さて、配置されたノードの「前」にあるすべてのキーを再ハッシュする必要があります。これらのキーは「すべて」のキーではないため、それは良いようです。しかし、たとえば 20 個のレプリカを配置することにした場合、20 個のノードで再ハッシュの手間がかかります。
レプリカが少ないと分散が悪化しますが、レプリカが多いと再ハッシュが必要な場合の負担が大きくなります。
この状況に適した解決策は何ですか? 何か不足していますか?