0

私が抱えている問題は、別のスレーブマシンでシステムを作成できることです。しかし、パーツを別のマシンに配布する方法がわかりません。IE マスター、スレーブ 1、およびスレーブ 2 はすべて、それぞれ IP 101、102、および 103 ではなく、同じマシンで終了します。

マスター サーバーを使用して、基本的に複数のサーバーを介してメッセージのワークフローを管理しています。したがって、マスターが起動すると、次のことを行うマスター サーバー アクターが作成されます。

  • 主人:
    1. 開始メッセージをスレーブ 1 に送信します
    2. スレーブ 1 から成功メッセージを取得し、メッセージをスレーブ 2 に渡します
    3. スレーブ 2 から成功メッセージを受け取り、システムをシャットダウンします
  • Slave1: サーバーからメッセージを取得し、マスターに成功を返信します
  • Slave2: サーバーからメッセージを取得し、マスターに成功を返信します

後で、これらのそれぞれを水平方向にスケーリングしたいのですが、その前に問題が発生しました。すべてのリモート機能は 1 台のマシンでのみ実行されます。

リモートを使用しているため、構成の一部は次のようになります。

akka {
  actor {
    provider = "akka.remote.RemoteActorRefProvider"
    deployment {
      "/masterCreatorActor/*" {
        remote = "akka.tcp://RemoteActorSystem@192.168.56.101:2552"
      }
      "/slave1Actor/*" {
        remote = "akka.tcp://RemoteActorSystem@192.168.56.102:2552"
      }
      "/slave2Actor/*" {
        remote = "akka.tcp://RemoteActorSystem@192.168.56.103:2552"
      }
    }
  }

アクターシステムとマスター アクターを作成するコード

val config = ConfigFactory.load("remotecreation")
val system = ActorSystem("PromoAnalysisSystem", config)
def act = system.actorOf(Props(classOf[MasterCreatorActor],OnFinished _),
                   name = "masterCreatorActor" )

次に、マスター アクター内で、メッセージを受信したときにこれを実行して、slave1 を使用します。

val slave1 = context.actorOf(Props[Slave1Actor],name = "slave1Actor")
slave1 ! slave1StartMessage  

そのため、システムをすべて 1 台のマシンでホストできます。1 台のマシンで起動して、別のリモート マシンですべて実行することもできます。しかし、構成内の各アクターを異なるマシンで実行することはできません。

私は愚かですが、どのように見ることができません!;)

4

1 に答える 1

0
akka {
  actor {
    provider = "akka.remote.RemoteActorRefProvider"
    deployment {
      "/masterCreatorActor/*" {
        remote = "akka.tcp://RemoteActorSystem@192.168.56.101:2552"
      }
      "/*/slave1Actor/*" {
        remote = "akka.tcp://RemoteActorSystem@192.168.56.102:2552"
      }
      "/*/slave2Actor/*" {
        remote = "akka.tcp://RemoteActorSystem@192.168.56.103:2552"
      }
    }
  }
于 2014-05-14T21:23:24.330 に答える