2017-09-12 49 views
10

我正在研究一個應用程序,該應用程序經常查詢大量的參與者,因此發送/接收的消息數量非常大。當應用程序在單臺機器上運行時,這不是問題,因爲這些消息是在單個JVM的邊界內發送的,速度非常快。但是,當我在多個節點上運行應用程序(使用akka集羣)時,每個節點都託管這些角色的一部分,並且消息通過網絡變得非常緩慢。Akka集羣 - 每節點一個經理角色

我想出的一個解決方案是在運行應用程序的每個節點上都有一個ManagerActor。這將大大減少交換消息的數量(即不是向每個角色發送數千條消息,如果我們在3個節點上運行應用程序,我們發送3條消息 - 每個ManagerActor一個,然後在當前JVM內將消息發送給其他(成千上萬)演員非常快)。不過,我對Akka來說相當陌生,我不太確定這樣的解決方案是否合理。你看到它的任何缺點嗎?任何其他更好/更原產於Akka的選項?

+0

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

回答

2

你可以使用阿卡的Distributed Publish-Subscribe來實現這一點。這樣,您只需按照常規方式在每個節點上啓動經理角色,讓他們訂閱主題,然後使用該主題主題向他們發佈消息。在上面鏈接的文檔中有一個簡單的例子。