2017-05-18 32 views
1

幾乎我們所有的應用程序都在嵌入拓撲中使用Hazelcast集羣。 由於應用程序的高負載,我們偶爾會遇到內存和cpu問題。正因爲如此,我們計劃將我們的拓撲從嵌入式改爲客戶端/服務器模式。Hazelcast - 在客戶機/服務器模式下爲多個應用程序提供服務的最佳羣集拓撲結構是什麼?

問題是,我們是否應該爲每個應用程序設置一個新的羣集?還是應該單個羣集爲所有客戶端應用程序提供服務

我知道可以在jvm中啓動多個hazelcast實例(http://docs.hazelcast.org/docs/3.5/manual/html/createclustergroups.html)。這也可以成爲生產的選擇嗎?

回答

0

讓我們根據用例進行分析。

  • 用例-1:的Hazelcast簇被主要用作分佈式緩存。在這種情況下,您可以簡單地保留一個公共集羣,並且所有應用程序都可以維護HazelcastClient以訪問集羣。
  • UseCase-2: Hazelcast集羣既用作分佈式緩存,也用於使用執行程序的分佈式計算目的。在這種情況下,您需要分析將要在羣集中存儲的數據量以及您將使用執行程序池運行的計算類型。在分配跨多個服務器的節點時,您還必須考慮CPU /內核的數量。

最佳實踐

  • 保持HazelcastClient對象爲單身,這樣的連接會爲每個請求,而不是創建多個客戶端連接增加網絡開銷,這可能會影響性能的情況下重複使用。

  • 利用NearCache功能在任何適用的情況下,將頻繁訪問的數據緩存在客戶端本身,而不是每次調用都跳到羣集。

  • 最好在自己的JVM中啓動每個節點,而不是在單個JVM中運行多個節點。父JVM中的任何不可預見的問題都將導致所有節點崩潰。

相關問題