【问题标题】:Akka Cluster Sharding - Entity to Actor communicationAkka Cluster Sharding - 实体到 Actor 的通信
【发布时间】:2021-05-09 11:33:01
【问题描述】:

我在将应用程序重写为 Akka Cluster Sharding 时遇到问题。我有一个分片实体,我们称之为A,每个节点上有一堆本地演员,我们称之为B。现在我发送一条包含 (String, ActorRef[B]) 的消息 B -> A,我想使用上一条消息中提供的 ref 回复 A -> B

一方面,文档表明它应该可以工作 https://doc.akka.io/docs/akka/current/typed/cluster-sharding.html#basic-example

但据我了解,A 应该不可能在集群中找到演员 B,因为它不是 entityID。

它是如何工作的?我是否也必须将B 设为实体?

【问题讨论】:

    标签: scala akka sharding akka-cluster


    【解决方案1】:

    ActorRef 是位置透明的:它包含将消息路由到不同 ActorSystem 中的参与者所需的信息(通常 1:1 映射到集群节点)。如果您有演员 B 的 ActorRef,则无论您在集群中的哪个位置,都可以向其发送消息。

    那么,当您始终可以跨集群发送消息时,为什么还要使用集群分片呢?

    集群分片允许实体独立于任何参与者的生命周期进行寻址:实体的化身作为参与者运行,分片管理生成参与者以按需充当化身,在给定的情况下将实体限制为最多一个化身时间,并保留将实体移动到不同节点上的化身的权利(通常是为了响应集群成员资格的变化)。如果您不需要特定类型的 Actor 的这些方面,则无需将其设为分片实体。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-11
      • 1970-01-01
      • 1970-01-01
      • 2015-07-01
      相关资源
      最近更新 更多