【问题标题】:java akka remote clustering with play frameworkjava akka远程集群与play框架
【发布时间】:2012-09-19 01:55:19
【问题描述】:

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

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

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

谢谢

【问题讨论】:

    标签: java playframework akka


    【解决方案1】:

    Play 的一个实例!框架应用程序可以使用简单的配置连接到远程 Akka 节点(即:您的主节点)。

    有两种方式:

    1. 覆盖默认的actor系统
    2. 定义一个新的actor系统

    我建议你使用第二个。 在这种情况下,您必须在 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 为它们选择一个随机的空闲端口。这是正确的,因为您需要的唯一众所周知的 host:port 地址是主节点,每个节点在启动时都必须指向该地址。

    【讨论】:

    • 仍在了解 scala 代码。但我想问另一个问题。那就是希望将 akka 集群部署为独立于 play 框架的组件。并使播放框架请求集群中的服务。例如集群可以部署在 Jboss 服务器上。您对为此使用 Jboss 或任何其他应用程序服务器有什么建议吗?
    • 能够通过使用 akka 微内核以及作为 play buil.scala 文件的 akka 依赖项来解决问题
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多