Akka类型演员选择/接待员

Akka类型演员选择/接待员,akka,Akka,我对新Akka的ActorSelection/接待员有疑问 在Akka键入之前,我没有使用ActorSelection,因为我在某个地方读到它没有执行,所以我一直通过哈希图引用actor,现在我正在阅读Akka键入的文档,我看到存在另一个机制接待员,所以对我来说问题是,它是否也会遇到同样的问题ActorSelection,我应该坚持我的旧模式,在HashMap上保留对Actor的引用,或者现在接待员是我的选择 在我的特定场景中,我的角色产生几个子角色创建几个子角色,如果父角色通过Akka持久性进

我对新Akka的ActorSelection/接待员有疑问

在Akka键入之前,我没有使用ActorSelection,因为我在某个地方读到它没有执行,所以我一直通过哈希图引用actor,现在我正在阅读Akka键入的文档,我看到存在另一个机制接待员,所以对我来说问题是,它是否也会遇到同样的问题ActorSelection,我应该坚持我的旧模式,在HashMap上保留对Actor的引用,或者现在接待员是我的选择

在我的特定场景中,我的角色产生几个子角色创建几个子角色,如果父角色通过Akka持久性进行钝化或恢复,它应该再次找到对这些子角色的引用

那么你认为,如果我转换为接待员,我会遇到性能问题吗


Thx对于答案…

actor选择将在每次使用时将actor路径解析为
actor ref
,如果用于高吞吐量的actor,这会有一定的成本,但其优点是如果actor停止,然后在同一路径上启动新的actor,
ActorSelection
将向新参与者发送消息,而如果您有一个
ActorRef
,它会特别指向没有停止的参与者实例,消息以死信结尾

接待员是完全不同的,更像是一个注册的演员,你可以订阅。当为密钥注册的
ActorRef
s集合发生更改时,您会收到一条带有新集合的更新消息,每发送一条消息都没有额外的开销,您直接处理收件人的
ActorRef
s


请注意,您可以使用向前台注册的参与者发送,以避免在参与者中实现订阅部分

ActorSelection
每次使用时都会将参与者路径解析为一个
ActorRef
,如果用于高吞吐量的参与者,这会有一定的成本,但其好处是,如果参与者停止,然后在同一路径上启动一个新参与者,
ActorSelection
会将消息传递给新参与者,而如果您有一个
ActorRef
,它会特别指向没有停止的actor实例,消息以死信结尾

接待员是完全不同的,更像是一个注册的演员,你可以订阅。当为密钥注册的
ActorRef
s集合发生更改时,您会收到一条带有新集合的更新消息,每发送一条消息都没有额外的开销,您直接处理收件人的
ActorRef
s


请注意,您可以使用向前台注册的参与者发送,以避免在参与者中实现订阅部分

首先,非常感谢您的回答,在我的解决方案中,我将有将近1000000个相同参与者类型的实例(我使用Akka有限状态机功能,每个参与者代表一个契约的FSM,因此对于Contract1,存在一个参与者实例,对于Contact2,存在另一个实例),因此,我不太确定这是否是一个好主意,以管理超过接待员,这将提供一个100万元素的列表。即使我是碎片,我也会在列表中得到300K,200K个元素。。。你认为在这种情况下选择Actor更好吗,,,我认为这可能会超过接待员工作的上限,因此你可能需要设计其他解决方案。它可以是切分(sharding),主要用于此类用例,也可以是您自己的解决方案,中间参与者通过接待员在其他节点上找到几个其他参与者,然后处理实际合同。首先,非常感谢您的回答,在我的解决方案中,我将有将近1000000个相同参与者类型的实例(我使用的是Akka有限状态机功能,每个参与者代表一个契约的FSM,因此对于Contract1,将存在一个参与者实例,对于Contact2,将存在另一个实例),所以我不太确定通过接待员来管理这是一个好主意,因为接待员将提供一个包含1000000个元素的列表。即使我进行了切分,我也会在列表中获得300K、200K个元素…你认为对于这种情况,选择Actor更好吗,,,我认为这可能会超过接待员的工作上限,所以你“您可能需要安装其他解决方案。它可能是切分(sharding),非常适合此类用例,也可能是您自己的解决方案,中间参与者通过接待员在其他节点上找到几个其他参与者,然后处理实际合同。