Akka集群-强制参与者留在特定的机器上

Akka集群-强制参与者留在特定的机器上,akka,akka-cluster,Akka,Akka Cluster,我有一个akka应用程序,我将在许多机器上部署它。我希望这些应用程序中的每一个都通过使用分布式发布/订阅事件总线功能相互通信 但是,如果我将系统设置为集群,那么我担心一个应用程序的参与者可能会在不同的节点上创建,而不是在它们启动的节点上创建 参与者只在其所属的应用程序启动的机器上创建,这一点非常重要 基本上,我不想要参与者的弹性或集群,我只想要分布式发布/订阅。我可以看到这里提到的单件或角色等选项,但是我想知道推荐的方法是什么。目前Akka中没有可以移动参与者的功能:要么以编程方式部署到特定机器

我有一个akka应用程序,我将在许多机器上部署它。我希望这些应用程序中的每一个都通过使用分布式发布/订阅事件总线功能相互通信

但是,如果我将系统设置为集群,那么我担心一个应用程序的参与者可能会在不同的节点上创建,而不是在它们启动的节点上创建

参与者只在其所属的应用程序启动的机器上创建,这一点非常重要


基本上,我不想要参与者的弹性或集群,我只想要分布式发布/订阅。我可以看到这里提到的单件或角色等选项,但是我想知道推荐的方法是什么。

目前Akka中没有可以移动参与者的功能:要么以编程方式部署到特定机器,要么将部署放入配置文件中。否则,它将根据您的需要在本地创建


Akka可能有一天会得到自动的参与者树分区,但这甚至还没有指定。

我认为这不是使用弹性集群的最佳方式。但是我们也考虑了同样的问题,发现它可以通过实体ID(如数据库碎片)散列来在节点上扩展行动者。例如,在每个节点上,我们创建一个NodeRouterActor,将消息代理给多个WorkerActor。当我们向NodeRouterActor发送消息时,它通过在哈希表中按键id%nodeCount查找来选择端点节点,然后端点NodeRouterActor将消息代理给控制实体的特定WorkerActor。

hmm,但singleton manager将在其他节点上启动Actor。即将发布的分区是否以类似的方式工作。在文档中看起来是这样的。虽然我可能错了,但我需要重读一遍。否则,集群的意义何在?@Nick请看这个例子,它展示了如何确保特定的参与者只在一台机器上创建