Mapreduce 在不同的远程节点上均匀创建同一参与者的多个实例?
为了实现可伸缩性,我希望Map actor实例(下面名为Mapreduce 在不同的远程节点上均匀创建同一参与者的多个实例?,mapreduce,akka,Mapreduce,Akka,为了实现可伸缩性,我希望Map actor实例(下面名为mapActor)分布在多个远程节点上,比如host1、host2和host3。我不确定如何在Akkaapplication.conf中实现这一点 MapReduceSystem { include "common" akka { actor { deployment { /mapActor { router = round-robin nr-of-inst
mapActor
)分布在多个远程节点上,比如host1
、host2
和host3
。我不确定如何在Akkaapplication.conf中实现这一点
MapReduceSystem {
include "common"
akka {
actor {
deployment {
/mapActor {
router = round-robin
nr-of-instances = 48
remote = "akka.tcp://MapReduceSystem@host1:2552,akka.tcp://MapReduceSystem@host2:2552,akka.tcp://MapReduceSystem@host3:2552"
}
/reduceActor {
remote = "akka.tcp://MapReduceSystem@host1:2552"
router = round-robin
nr-of-instances = 1
}
/masterActor {
remote = "akka.tcp://MapReduceSystem@host1:2552"
nr-of-instances = 1
}
}
}
remote.enabled-transports = ["akka.remote.netty.tcp"]
remote.netty.tcp.hostname = "host1"
}
}
为了完整起见,这里是我的common.conf
:
akka {
actor {
provider = "akka.remote.RemoteActorRefProvider"
}
remote.netty.tcp.port = 0
remote.log-remote-lifecycle-events = off
loggers = ["akka.event.slf4j.Slf4jLogger"]
loglevel = "DEBUG"
}
注意mapActor
的定义,我想提供3台主机来创建此Actor的实例,每台主机16台,但是remote
参数只占用一台主机。我该怎么做
据我所知,此配置将对应于系统启动计算机host1
,配置在host2
和host3
上的外观如何
因此,您需要从
因此,您需要的不是remote=“a,b,c”
而是target.nodes=[“a”,“b”,“c”]
除了pushy指出的配置语法问题之外,除了在主机1
和主机2
上启动系统,在主机1
之前不需要做任何事情,这样当启动/user/mapActor
时,它的路由可以成功部署到它们上。配置取自host1
并传输到其他主机,无需进一步配置,并且无需在工作主机上调用actorOf
(至少不适用于讨论中的路由器)。配置取自host1
并传输到其他主机,无需进一步配置,无需在工作主机上调用actorOf
(至少不需要讨论中的路由器)。部署配置仅需要在调用actorOf
的主机上进行,目标节点将被告知要做什么。完美!这是我缺少的一点重要信息。目标节点中的代码怎么样?main不会在那里做任何actorOf
,或者?如果你能详细说明一个完整的答案,我会接受。部署配置只需要在你调用actorOf
的主机上,目标节点就会被告知该做什么。太好了!这是我缺少的一点重要信息。目标节点中的代码怎么样?如果你能详细说明一个完整的答案,我会接受。
akka {
actor {
deployment {
/serviceA/aggregation {
router = "round-robin"
nr-of-instances = 10
target {
nodes = ["akka.tcp://app@10.0.0.2:2552", "akka.tcp://app@10.0.0.3:2552"]
}
}
}
}
}