Akka类型演员选择/接待员
我对新Akka的ActorSelection/接待员有疑问 在Akka键入之前,我没有使用ActorSelection,因为我在某个地方读到它没有执行,所以我一直通过哈希图引用actor,现在我正在阅读Akka键入的文档,我看到存在另一个机制接待员,所以对我来说问题是,它是否也会遇到同样的问题ActorSelection,我应该坚持我的旧模式,在HashMap上保留对Actor的引用,或者现在接待员是我的选择 在我的特定场景中,我的角色产生几个子角色创建几个子角色,如果父角色通过Akka持久性进行钝化或恢复,它应该再次找到对这些子角色的引用 那么你认为,如果我转换为接待员,我会遇到性能问题吗Akka类型演员选择/接待员,akka,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),非常适合此类用例,也可能是您自己的解决方案,中间参与者通过接待员在其他节点上找到几个其他参与者,然后处理实际合同。