2017-09-12 50 views
10

我正在研究一个应用程序,该应用程序经常查询大量的参与者,因此发送/接收的消息数量非常大。当应用程序在单台机器上运行时,这不是问题,因为这些消息是在单个JVM的边界内发送的,速度非常快。但是,当我在多个节点上运行应用程序(使用akka集群)时,每个节点都托管这些角色的一部分,并且消息通过网络变得非常缓慢。Akka集群 - 每节点一个经理角色

我想出的一个解决方案是在运行应用程序的每个节点上都有一个ManagerActor。这将大大减少交换消息的数量(即不是向每个角色发送数千条消息,如果我们在3个节点上运行应用程序,我们发送3条消息 - 每个ManagerActor一个,然后在当前JVM内将消息发送给其他(成千上万)演员非常快)。不过,我对Akka来说相当陌生,我不太确定这样的解决方案是否合理。你看到它的任何缺点吗?任何其他更好/更原产于Akka的选项?

+0

你可能需要使用openmpi,你也可以谷歌“openmpi java example” – caot

回答

2

你可以使用阿卡的Distributed Publish-Subscribe来实现这一点。这样,您只需按照常规方式在每个节点上启动经理角色,让他们订阅主题,然后使用该主题主题向他们发布消息。在上面链接的文档中有一个简单的例子。