4

複数のノードを持つクラスター化されたコンピューターのシステムを構築しています。クラスタ内の複数のノードにタスクをスケジュールすることを想定したマスターノードがあります。ノードは、ネットワークケーブルを介してマスターノードに接続されている個別のPCです。システム全体は、javaakkaおよびplayフレームワークプラットフォームで実装されることが期待されています。PlayFrameworkを使用したakkaリモートクラスタリングでこれを実装する方法はありますか?

私はリモート計算機のチュートリアルを知っていますが、SBTプラットフォームで実行されているようですが、同様のチュートリアルがPlayFrameworkに存在するかどうかを知りたいと思います。

または私のプロジェクトを支援するためのリンク

ありがとうございました

4

1 に答える 1

9

Playのインスタンス!フレームワークアプリケーションは、単純な構成を使用してリモートAkkaノード(つまり、マスターノード)に接続できます。

2つの方法があります:

  1. デフォルトのアクターシステムをオーバーライドする
  2. 新しいアクターシステムを定義する

2番目のものを使用することをお勧めします。この場合、application.confに次のようなものを追加する必要があります

master {
    akka {
        actor {
            provider = "akka.remote.RemoteActorRefProvider"
        }
        remote {
            transport = "akka.remote.netty.NettyRemoteTransport"
            netty {
                hostname = "your-master-host-name"
                port = 0
            }
        }
    }
}

その後、あなたのプレイで!この方法でリモートマスターノードに接続できるアプリ

 ActorSystem system = ActorSystem.create("master", ConfigFactory.load().getConfig("master"))

 ActorRef master = system.actorFor("akka://master@your-master-host-name:your-master-port/user/master")

デフォルトのPlayAkkaアクターシステムをオーバーライドしたい場合。参照構成は次のとおりです:http ://www.playframework.org/documentation/2.0.3/AkkaCore

マスタークラスターノードと計算クラスターノードについては、ここで説明されているアーキテクチャとコードを使用することをお勧めします:http: //letitcrash.com/post/29044669086/balancing-workload-across-nodes-with-akka-2

マスターノードと計算ノードがWebまたはRESTインターフェースを必要としない場合は、それらを単純なJavaプログラムとして実装できます。

引用された記事では、ノードはリモートで公開されていません。これを行うには、マスターノードアプリにapplication.confを追加するだけです。

master {
    akka {
        actor {
            provider = "akka.remote.RemoteActorRefProvider"
        }
        remote {
            transport = "akka.remote.netty.NettyRemoteTransport"
            netty {
                hostname = "your-master-host-name"
                port = your-master-port
            }
        }
    }
}

そして、actorOfメソッドでインスタンス化します

ActorSystem system = ActorSystem.create("master", ConfigFactory.load().getConfig("master"))

ActorRef master = system.actorOf(new Props(Master.class), "master")

計算ノードは、Play!と同じ方法で構成する必要があります。ノード。

マスターノードのみにTCP-IPポートが定義されていることに注意してください。非マスターノードは0ポートを使用します。これにより、Akkaはランダムな空きポートを選択するように構成されます。必要な唯一の既知のhost:portアドレスはマスターアドレスであり、起動時にすべてのノードがポイントする必要があるため、これは正しいです。

于 2012-09-20T08:17:17.147 に答える