如何观看Akka群集中某个远程演员的死亡?

问题描述 投票:0回答:1

我正在使用Akka分片群集在多个节点上分配工作负荷,并使用context.watchWith(worker)检测子角色的意外终止。

[如果子actor被分配在与父节点不同的节点上(通过群集分片),并且如果该子节点处于关闭状态,则父actor将不会获得子actor的死亡通知。

我知道我可以添加自己的逻辑来跟踪儿童演员的生命周期。还是,我想知道,Akka是否对这种情况(远程节点上的儿童演员)具有死亡监视的本地支持?

akka akka-cluster
1个回答
1
投票

通常这是不正确的,如果该参与者停止活动,则观看驻留在另一个节点上的ActorRef会给您终止消息。

但是,当使用群集分片时,您实际上没有访问远程ActorRef的权限,而是使用分片作为代理根据消息中的字段传递消息。分片可以决定随时在整个集群上重新平衡分片,例如,当新节点加入或节点离开集群时,在这种情况下,可以停止分片的参与者,并在下一个消息在另一个节点上启动时就开始分片。

如果观看远程演员的动机是为了获得某种形式的交付保证,那么我们最近在Akka 2.6.4中添加了一个名为Reliable Delivery的新工具,可能会很有趣。您可以在此PR https://github.com/akka/akka-samples/pull/186

中看到它已用于分布式工作负载示例中
© www.soinside.com 2019 - 2024. All rights reserved.