1

いくつかのリソースを配布するためにマルチキャスト通信を実装しようとしています。そのためにjGroupsを使用 しているので、信頼できるマルチキャストとFIFOオーダーがあります。そうすることで、分散ソリューションで、つまりコーディネーターとして機能するマスター ノードがないことを実現したいと考えています。

すべてのノードが配布を開始できるため、2 つ以上のノードが同時に配布を開始する可能性があります。ノードが配布メッセージを受信すると、これに応答します。応答メッセージとスターターからのメッセージに違いはありません。リソース名 (resourceA など) に関する情報と、そのノードがそれを処理できるかどうかのみが含まれます。Member1 が配布を開始すると、次のようなメッセージが送信されます。

Member1, resourceA, OK

Member2 にはそのリソース用のスペースがなく、次のような応答メッセージを送信します。

Member2, resourceA, NOT_OK

この場合、Member1 は resourceA を取得できることを知っているため、簡単です。複数のノードがリソースを処理できる場合、他のプロパティがリソースを取得するユーザーを決定します (たとえば、最も高い ID を持つメンバー)。

私の問題は、2 つ以上のノードが同じトピック (resourceA) について同時に配布を開始している場合、どのように処理するかということです。

この方法で問題が発生することはありますか? Member1 と Member2 が同時に配布を開始しています。この時点で、両者はお互いからの応答を期待しています。応答メッセージまたはスターター メッセージに違いがないという事実のために、両方とも、受信したばかりのメッセージが応答者であると考えています。そのため、Member1 はスターター メッセージをマルチキャスト グループに送信し、Member2 はスターター メッセージをマルチキャスト グループに送信します (Member1 からメッセージを受信する前に)。現在、Member1 は Member2 からスターター メッセージを受信して​​おり、これが応答であると考えています。

すべてのノードが (スターターとして、または応答と共に) トピックごとに 1 つのメッセージのみを送信することを保証することで、3 つ以上のノードがある場合でも、この方法で問題はないと言えます。

4

1 に答える 1

1

あなたの説明から、次の結論を導き出すことができます。

  • すべてのメンバーは最初から実行されていると見なされます。このシステムが実行されると、新しいメンバーは追加されず、メンバーが削除されることもありません。
  • すべてのメンバーは、システム内のメンバーの総数を認識しています

これらの結論のいずれか (または両方) が正しくない場合、アルゴリズムがどのように機能するかわかりません。これは、すべてのメンバーがいつ開始メッセージに応答したかを知り、どのメンバーが最も高い ID を持っているかを結論付ける方法がないためです。

両方の結論が正しければ、アルゴリズムの機能に問題はなく、あなたのアプローチは機能しているようです。ただし、結果として得られるシステムは、失敗したメンバーや応答しないメンバーに関してエラーが発生しやすくなります。1 人のメンバーがスターター メッセージに応答しない場合、応答しないメンバーである場合とそうでない場合があるため、誰がリソースを取得するかを決定できない状況になる可能性があります。

残念ながら、ある時点でメンバーの 1 人が応答しない可能性が非常に高くなります。稼働時間の要件に関する情報は提供されていませんが。1 つのメンバーが応答しないという理由だけでアルゴリズムが完全に故障するのを回避するには、タイムアウトを追加し、応答しない場合は「既知のメンバー リスト」からメンバーを削除するなど、アルゴリズムに予防措置を設計する必要があります。間に合います。

しかし、このようなビルトイン フォールト トレランスを備えていても、何らかの調整マスターを使用しない完全分散型ソリューションでは、定義上、対処が困難な状況になることを認識しておく必要があります。たとえば、分散環境では、ネットワークの問題により、ネットワークの半分が残りの半分を認識できないという状況が発生する可能性があります。最終的な結論を導き出す調整マスターが存在しないため、ネットワークの両方の半分は「自分は世界を知っている」と考え、自分の仕事を続けます。それを解決する方法について決定を下すには、要件をより明確にし、起こりうる障害状況をよりよく把握する必要があります...

于 2012-09-16T23:02:11.543 に答える