1

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

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

仅在启动它所属的应用程序的机器上创建参与者非常重要。

基本上,我不想要演员的弹性或集群,我只想要分布式发布/订阅。我可以看到像单例或角色这样的选项,这里提到了http://letitcrash.com/tagged/spotlight22,但我想知道推荐的方法是什么。

4

2 回答 2

0

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

于 2013-07-04T17:16:24.510 回答
0

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

(Akka 有朝一日可能会获得自动的 Actor 树分区,但这还没有具体说明。)

于 2013-06-24T07:35:52.390 回答