11

akka で作成したリモート アクター ソフトウェアをクラスターにデプロイしたいと考えています。このシステムは、複数のワーカー ノードと 1 つのマスター ノードで構成されています。問題は、クラスター ノードの IP アドレスを事前に知ることができないことです (ただし、それらがすべて同じサブネットワークの一部であることはわかっています)。そのため、各ノードで正しいアクター ref を作成するために、起動後に全員の IP アドレスを検出する優れた方法が必要です。

フリー ソフトウェア ライセンスで配布されている軽量ソリューション (初期セットアップに必要なだけ) を探しています。

4

3 に答える 3

7

少し前に、あなたの問題を解決することを目的としたプロトタイプを作成しました(コードを再利用したり、貢献したりしてください)。

それがどのように機能するかについてのいくつかの言葉。アクター レジストリ (=ノード) ごとにリモート アクターを起動します。RegistryActor は、分散セットアップで実行されている他のすべてのレジストリへのリンクを保持します。新しいノードがシステムに追加されると、少なくとも 1 つの他のノード (ActorRegistry) について認識し、通知する必要があります。ActorRegistry は、他のすべてのノードに新しいノードを知らせ (したがって、すべての RegistryActor は他のすべての RegistryActor へのリンクを持っています)、アクターへのリンクを交換するプロセスを開始します。システムで実行されているローカルまたはリモートのいずれか)。

詳細については、このブログ投稿を参照してください。

于 2011-06-10T14:42:25.207 に答える
4

jgroupを見てください。

http://jgroups.org/

それはあなたのすべての基準を満たしています - それは軽量でオープンソースであり、非常に成熟した安定した製品です.

要件に基づいて自動グループ管理と検出を簡単に構成できます。ほぼすべてのネットワーク構成をサポートします。グループ メンバーの検出には、マルチキャスト、共有ファイル、またはユニキャストを使用できます。

于 2011-06-11T21:25:46.837 に答える
1

すべてのノードが共通の知識を共有しない限り、ソリューションは IP ブロードキャストに依存する必要があると思います。ブロードキャストは、サブネット上のすべてのネットワーク ノードにパケットを送信することとして定義されているため、すべてのワーカー ノードがリッスンしている間にマスター ノードがそれを行う場合、先験的に IP アドレスを知らなくてもそれらすべてを接続できるはずです。

これは Scala でコーディングしていませんが、Java でメッセージをブロードキャストする方法のかなり読みやすい例を次に示します: http://download.oracle.com/javase/tutorial/networking/datagrams/broadcasting.html。同じクラスを使用して Scala に適応させるのは簡単です。

于 2011-06-10T12:53:44.137 に答える