我正在构建一个具有多个节点的集群计算机系统。有一个主节点假设将任务调度到集群中的多个节点。这些节点是通过网络电缆连接到主节点的独立 PC。整个系统预计用java akka和play框架平台实现。有没有办法通过带有播放框架的akka远程集群来实现这一点。
我知道远程计算器教程,但它似乎是在 SBT 平台上运行的,但我很想知道播放框架中是否存在类似的教程。
或任何链接来帮助我完成我的项目
谢谢你
我正在构建一个具有多个节点的集群计算机系统。有一个主节点假设将任务调度到集群中的多个节点。这些节点是通过网络电缆连接到主节点的独立 PC。整个系统预计用java akka和play框架平台实现。有没有办法通过带有播放框架的akka远程集群来实现这一点。
我知道远程计算器教程,但它似乎是在 SBT 平台上运行的,但我很想知道播放框架中是否存在类似的教程。
或任何链接来帮助我完成我的项目
谢谢你
Play 的一个实例!框架应用程序可以使用简单的配置连接到远程 Akka 节点(即:您的主节点)。
有两种方法:
我建议你使用第二个。在这种情况下,您必须在 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")
如果您更喜欢覆盖默认的 Play Akka 演员系统。这是参考配置: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 为它们选择一个随机的空闲端口。这是正确的,因为您需要的唯一众所周知的主机:端口地址是主节点,每个节点在启动时都必须指向该地址。