20.6.2.3. サーバーノードのハッシュコード計算


仮想ノードのサポートを追加すると、帯域幅によりバージョン 1.0 が非現実的になり、クラスター内の全仮想ノードのハッシュコードを返す必要があります(この数は、数百万に簡単になる可能性があります)。そのため、Hotgitops プロトコルのバージョン 1.1 では、クライアントには各サーバーのベースハッシュ ID またはハッシュコードが指定されるため、各サーバーの実際のハッシュ位置を仮想ノードが設定されていない状態で、または両方計算する必要があります。ノードのハッシュコードの計算を試みる際に、ルールクライアントに従う必要があります。

1\.仮想ノードが無効 の場合: クライアントがサーバーのベースハッシュコードを受信したら、ハッシュ wheel の正確な位置を見つけるために、それらを正規化する必要があります。正規化のプロセスには、ベースハッシュコードをハッシュ関数に渡して、負の値を避けるために小さな計算を行う必要があります。生成される数字は、ハッシュ wheel におけるノードの位置になります。

public static int getNormalizedHash(int nodeBaseHashCode, Hash hashFct) {
   return hashFct.hash(nodeBaseHashCode) & Integer.MAX_VALUE; // make sure no negative numbers are involved.
}

2\.仮想ノードが有効 な場合: この場合、各ノードは N つの異なる仮想ノードを表し、各仮想ノードのハッシュコードを計算するには、0 から N-1 までの数字を取り、以下のロジックを適用する必要があります。

  • 0 が id である仮想ノードの場合は、前のセクションで示したように、ノードのハッシュコードの取得に使用する手法を使用します。
  • 1 から N-1 id の仮想ノードの場合は、以下のロジックを実行します。
public static int virtualNodeHashCode(int nodeBaseHashCode, int id, Hash hashFct) {
   int virtualNodeBaseHashCode = id;
   virtualNodeBaseHashCode = 31 * virtualNodeBaseHashCode + nodeBaseHashCode;
   return getNormalizedHash(virtualNodeBaseHashCode, hashFct);
}
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2026 Red Hat
トップに戻る