【问题标题】:How are remote actors created on joining of new nodes in akka?在 akka 中加入新节点时如何创建远程参与者?
【发布时间】:2016-05-17 09:12:54
【问题描述】:

解释我的 Akka 集群设置:

  • 我在多节点 Akka 集群中有远程参与者。
  • Actor 位于单例类型的路由器后面。
  • 单例路由器位于集群单例代理之后。
  • 另外,顺便说一句,我有 N 种演员,每个演员执行不同类型的任务并由不同的路由器管理。

代码 sn-p(Java)

Config config = ConfigFactory.parseString(
                "akka.remote.netty.tcp.port=" + 2551).withFallback(
                ConfigFactory.load());

ActorSystem system = ActorSystem.create("CalcSystem", config);

Address[] addresses = {
                          AddressFromURIString.parse("akka.tcp://CalcSystem@127.0.0.1:2551"),
                          AddressFromURIString.parse("akka.tcp://CalcSystem@127.0.0.1:2552"),
                          AddressFromURIString.parse("akka.tcp://CalcSystem@127.0.0.1:2553")
                          };
        ActorRef router = system.actorOf(
                            ClusterSingletonManager.props(new ClusterRouterPool(new RoundRobinPool(2),
                                    new ClusterRouterPoolSettings(100, 3,
                                            false, "")).props(
                                                    new RemoteRouterConfig(new RoundRobinPool(6), addresses).props(
                                                            Worker.createWorker())),PoisonPill.getInstance(),settings),"workerRouter");

    ClusterSingletonProxySettings proxySettings = ClusterSingletonProxySettings.create(system);
    ActorRef routerProxy = system.actorOf(ClusterSingletonProxy.props("/user/workerRouter", proxySettings), "routerProxy");

我的疑问是如何使地址列表成为动态列表?当前的硬编码地址列表在生产环境中不起作用。

一旦新节点加入集群,Router/ClusterSingletonManager 应该能够识别并在该新节点上创建远程参与者(它可能是添加到现有集群的全新节点,也可能是这种情况整个集群启动,第一次或在新代码部署的情况下)

就我的种子节点而言,它们在 akka.conf 文件中有所提及。

akka {
  actor {
    provider = "akka.cluster.ClusterActorRefProvider"
  }

  cluster {
    seed-nodes = [
      "akka.tcp://CalcSystem@127.0.0.1:2551"]
  }
}

【问题讨论】:

    标签: java akka akka-cluster


    【解决方案1】:

    Ashish -- 这对你有用吗http://letitcrash.com/post/35055573978/21-spotlight-cluster-aware-routers。 “在多台机器上横向扩展的一种简单方法是使用集群感知路由器。向集群中添加一个新节点,它将自动作为工作人员参与。稍后您可以关闭该节点,它将从路由器中删除。”

    【讨论】:

      猜你喜欢
      • 2013-09-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-10
      • 2021-07-10
      • 2014-01-14
      • 2012-11-09
      相关资源
      最近更新 更多