4

私は akka クラスターのドキュメントを読んでいて、今はゴシップセクションにいます。次の文がわかりませんでした。

クラスターのメンバーシップは、ゴシップ プロトコルを使用して伝達されます。このプロトコルでは、クラスターの現在の状態がクラスター全体でランダムにゴシップされ、最新バージョンを確認していないメンバーが優先されます。

想像するのはかなり難しいです。次の質問があります。

質問: 最新の変更がまだゴシップされている場合、ノードはどのメンバーが最新の変更を見ていないかをどのように知るのですか?

つまり、ノードが通知を受信した場合、それをどこに送信するかをどのように決定するのでしょうか? 明らかに、送信者は最新の変更を確認しているため、それを返送すべきではありません。しかし、他のメンバーはどうですか?それらの一部はすでに状態を確認している可能性があり、これらすべてのメンバーを照会する以外に状態を把握する方法はありません。しかし、あるノードにクエリを実行すると、クエリ中に「いいえ、まだ見ていません」と応答し、誰かがそのノードに状態を送信する可能性があります...

4

1 に答える 1

1

次の段落では、ベクトル クロックの使用について説明します。それは言う

収束は、ゴシップ中に現在の状態のバージョンを見た一連のノードを渡すことによって実装されます。

ゴシップ プロトコルでこれを見たことがないことに注意してください。これは通常、それ自体でかなり迅速に収束するためです。ソースを探しに行きますが、うわさ話をする人が情報をプッシュするだけでなく、情報を交換するときに、約 10 ~ 15 のステップで収束する約 1000 のノードを思い出します。

于 2016-09-11T23:25:50.427 に答える