2012-09-19 129 views
4

我正在構建一個有多個節點的集羣計算機系統。有一個主節點假設將任務調度到集羣中的多個節點。節點是通過網線連接到主節點的獨立PC。整個系統預計將用java akka來實現併發揮框架平臺的作用。 有沒有一種方法來實現這個與玩框架akka遠程集羣。java akka遠程集羣與玩框架

我知道遠程計算器教程,但它似乎與SBT平臺運行 ,但我很想知道是否有類似的教程存在與播放框架。

或者任何一個環節,以幫助我的項目

謝謝

回答

9

播放的一個實例!框架應用程序可以使用簡單的配置連接到遠程Akka節點(即:主節點)。

有兩種方式:

  1. 覆蓋默認的演員系統
  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://[email protected]:your-master-port/user/master") 

。下面是參考配置: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") 

的計算節點必須在遊戲中以同樣的方式來配置實例它!節點。

請注意,只有主節點有定義的TCP-IP端口。非主節點使用0端口,它配置Akka爲它們選擇一個隨機空閒端口。這是正確的,因爲您需要的唯一衆所周知的主機:端口地址是主節點,每個節點在啓動時必須指向。

+0

謝謝Federico會盡力回覆你 –

+0

仍然理解scala代碼。但我想問另一個問題。那就是希望將akka集羣部署爲一個獨立於播放框架的組件。並對來自集羣的服務進行播放框架請求。例如,羣集可以部署在Jboss服務器上。你有任何關於使用Jboss或任何其他應用程序服務器的建議。 –

+0

能夠通過使用akka微內核解決該問題,並且還可以作爲play buil.scala文件的akka​​依賴項 –