2012-09-19 98 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​​依赖项 –