我正在开发一个应用程序,它经常查询非常多的参与者,因此发送/接收非常多的消息。当应用程序在一台机器上运行时,这不是问题,因为消息是在单个JVM的边界内发送的,这是相当快的。但是,当我在多个节点上运行应用程序时(使用akka-cluster),每个节点托管这些参与者的一部分,消息通过网络传递,这会变得非常慢。
我提出的一种解决方案是在运行应用程序的每个节点上都有一个ManagerActor。这将极大地减少消息交换的数量(即,如果我们在3个节点上运行应用程序,我们将发送3条消息-每个ManagerActor发送3条消息,然后在当前的JVM中向其他(数千条)参与者发送消息,这非常快),而不是向每个参与者发送数千条消息。然而,我对Akka还是个新手,我不太确定这样的解决方案是否有意义。你看到它有什么缺点了吗?有没有其他更好/更适合Akka的选择?
发布于 2017-09-15 16:51:44
你可以使用Akka的Distributed Publish-Subscribe来实现这一点。这样,您只需以通常的方式在每个节点上启动一个管理器参与者,让它们订阅一个主题,然后使用该主题向它们发布消息。在上面链接的文档中有一个简单的例子。
https://stackoverflow.com/questions/46180192
复制相似问题