Akka集群 - 迫使演员留在特定的机器上

时间:2013-06-19 16:52:32

标签: akka akka-cluster

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

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

一个actor只在它所属的应用程序启动的机器上创建,这一点非常重要。

基本上,我不想要演员的弹性或聚类,我只想要分布式的pub / sub。我可以看到这里提到的单身或角色等选项http://letitcrash.com/tagged/spotlight22,但我想知道推荐的方法是什么。

2 个答案:

答案 0 :(得分:0)

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

(Akka可能有一天会获得自动演员树分区,但是甚至还没有指定。)

答案 1 :(得分:0)

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