java Akka是否有内置的解决方案来从广播路由器收集答案?
List<String> paths = Arrays.asList("/user/cars/*");
ActorRef router =
getContext().actorOf(new BroadcastGroup(paths).props(), "router");
router.tell("which cars are green")
根据以上代码,我向1000000辆车发送了一条信息,回答我哪辆车是“绿色的”? 和 我预计50000辆车回答“是”,其余(950000辆)回答“否”
我认为使用广播路由器是查询汽车最有效的方法
但是,收集50000个“绿色”答案的最快方法是什么
Akka有内置的解决方案吗
(最好是同时收集答案,而不仅仅是一个演员?)
# 1 楼答案
答案多少取决于你所说的“收集”答案的意思
如果你需要聚合它们(听起来像是这样),最终需要在一个演员身上实现。这意味着你的100万个答案将全部排在一个参与者的队伍中,它将成为一个热点
如果你能容忍稍微慢一点的读取,另一种可能性是有多个计数器,它们本身就是路由器的一部分(现在就说循环)。这将计数分成多个参与者,但现在要获得真正的总计数,您必须询问所有参与者,并在读取时将其汇总。如果你想记录大量的“答案”,但只有在延迟可能不那么重要的时候,才偶尔阅读它们,这种策略可能是有益的