【发布时间】:2018-06-17 03:58:01
【问题描述】:
我目前正在学习 AKKA,但在控制路由数量方面存在问题。我正在尝试使用集群感知路由器作为接待员来实现一个集群,其中简单的参与者作为 routee,所有这些都在我的本地运行以进行开发。假设我有一个 如下配置
deployment {
/RouterA {
router = round-robin-pool
metrics-selector = mix
nr-of-instances = 20
routees.paths = ["/user/ActorA"]
cluster {
enabled = on
max-nr-of-instances-per-node = 20
allow-local-routees = on
}
}
}
然后我可以在调试日志中看到 20 个路由器
我将 RouterA 注册为集群接待员,如下所示
ActorRef someactor=system.actorOf(Props.create(Something.class),"ActorA");
ActorRef routerA=system.actorOf(FromConfig.getInstance().props(),"RouterA");
ClusterClientReceptionist.get(system).registerService(routerA);
Q1:我是否将特定路由器实例注册为接待员?还是其中的 20 个?是否可以/建议将 a/20 路由器注册为接待员?
Q2:为什么我看到 20 个路由器都使用同一个 ActorA(通过 this.hashCode() )实例?配置路由器(通过文件)的正确方法是什么,以便它将消息发送到 20 个路由之一,无论本地还是远程?还是我对创建 20 个路由的方式有误? (需要20个routee来平衡负载)
Q3 : 如果我使用以下配置,调试日志中似乎只有 1 个路由器,为什么?是因为最佳尺寸探索调整器吗?所以它丢弃 nr-of-instances = 20 ?如果是这样,我如何让路由器加速?
deployment {
/RouterA {
router = cluster-metrics-adaptive-group
metrics-selector = mix
nr-of-instances = 20
routees.paths = ["/user/ActorA"]
cluster {
enabled = on
max-nr-of-instances-per-node = 20
allow-local-routees = on
}
optimal-size-exploring-resizer {
enabled = on
action-interval = 5s
lower-bound = 10
upper-bound = 50
downsize-after-underutilized-for = 72h
}
}
}
谢谢
【问题讨论】:
标签: akka akka-cluster