微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Akka 集群分片 - 实体到 Actor 的通信

如何解决Akka 集群分片 - 实体到 Actor 的通信

我在将我的应用程序重写为 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,因为它不是实体 ID。

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

解决方法

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

既然您始终可以跨集群发送消息,那么为什么要使用集群分片?

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?