ゴシップベースのメンバーシップ検出メカニズムを実装しています。リングトポロジがあるとします。つまり、node1はその周囲の2つのノード(node4とnode2)についてのみ認識します。
node1
- -
- -
node4 node2
- -
- -
node3
さて、うわさ話は言います:メンバーシップリストからランダムにノードを選んでください。ただし、リングトポロジに厳密に従う場合、node1はnode2またはnode4でのみゴシップを試行する必要があります。それ以外の場合は、通信の場合のみ、トポロジはリングではなくクリークになります。
背景:Amazon dyanmoの論文によると:
各ノードは毎秒ランダムに選択されたピアに接続し、2つのノードは永続的なメンバーシップ変更履歴を効率的に調整します。
その場合、dynamoの実装は「真の」リングトポロジに従わず、コンシステントハッシュ(レプリケーション)にリングを使用し、メンバーシップ検出にクリークを使用するだけですか?
あなたの例では:
私はノードが彼の直接の隣人が何であるかを知っているとは思わない。隣人が2人いるだけで、どちらかはわかりません。
ノード4はノード3とチャットしたいと考えています。
「うわさ話」は、ノード1と2が会話をリッスンする場所です(これは促進に役立ちます)。ノード4とノード3について聞くことで、両方をメンバーシップリストに追加できます。
これで、ノード1と2の両方が、ノード4と3に他のメンバーを知っているかどうかを尋ねることができます。
ノード1が最初にノード4に質問するとします。 Node 2と3は、ゴシップを聞いてノード1の存在を確認します。
この時点では誰もノード2について知りませんが、最終的には、別のノードにメンバーシップリストを要求することで、ノード2の存在を明らかにします。
これにより、通信回線が切断されることはありません。