gpt4 book ai didi

scala - Akka 集群中的 Actor 查找

转载 作者:行者123 更新时间:2023-12-04 02:16:08 26 4
gpt4 key购买 nike

我有一个 Scala 应用程序,其中有多个节点。每个节点都有一个 ActorSystem 和一个主要 Actor ,每个 Actor 必须有一些特定 Actor 的 ActorRef(例如“节点 1”有“Actor3”,“Actor3”需要“Actor7”和“Actor8”的 ActorRef 来完成它的工作) .我的问题是我不知道另一个节点(“Node2”)是否有我正在寻找的“Actor1”或“Actor7”。

我的想法是在每个 MemberUp 中循环,多次使用 ActorSelection 并询问每个新成员是否有我正在寻找的 Actor 。这是我能做到的唯一方法吗?有没有办法更有效地做到这一点?

最佳答案

ActorSelection 的另一种方法是查找表。如果您需要进行大量的 Actor 选择并且 Actor 创建不是那么动态,这可能是更好的解决方案。

在每个节点上,您可以创建一个数据结构,如 Map[String,List[String]] 第一个键是节点名称,列表值是该节点中的 actor 引用。

诀窍是当任何节点为其参与者发生变化(创建、停止)时,另一个参与者应该注意到其他节点的变化,以便任何节点同步更新 map 。

如果保证,那么每个节点都可以查找actor存在;

map.get(nodeName) match {
case Some(n) => n.contains(actorName)
case None => false
}

关于scala - Akka 集群中的 Actor 查找,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33544857/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com