有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

playframework java akka远程集群与play framework

我正在构建一个包含多个节点的集群计算机系统。假设有一个主节点将任务调度到集群中的多个节点。这些节点是通过网络电缆连接到主节点的独立PC。整个系统预计将在java akka和play框架平台上实现。 有没有办法用akka远程集群和play框架来实现这一点

我知道远程计算器教程,但它似乎是在SBT平台上运行的 但我很想知道play框架是否有类似的教程

或者任何帮助我完成项目的链接

谢谢!


共 (1) 个答案

  1. # 1 楼答案

    一个游戏的例子!框架应用程序可以通过简单的配置连接到远程Akka节点(即:您的主节点)

    有两种方法:

    1. 覆盖默认的参与者系统
    2. 定义一个新的参与者系统

    我建议你用第二个。 在这种情况下,您必须添加应用程序。大概

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

    然后在你的戏里!应用程序可以通过这种方式连接到te远程主节点

     ActorSystem system = ActorSystem.create("master", ConfigFactory.load().getConfig("master"))
    
     ActorRef master = system.actorFor("akka://master@your-master-host-name:your-master-port/user/master")
    

    如果你喜欢覆盖默认的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程序

    在引用的文章中,节点没有远程公开。要做到这一点,只需添加一个应用程序。主节点应用程序中的配置:

    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为它们选择一个随机空闲端口。这是正确的,因为您需要的唯一众所周知的主机:端口地址是主地址,每个节点在启动时都必须指向主地址