2012-12-18 21 views
0

我們在運行於Java servlet容器中的Web後端中使用Hazelcast(2.3)來分佈羣集中的數據。使用MapStore界面將Hazelcast地圖保存在MySQL數據庫中。目前,我們正在使用Java本地客戶端界面,並且我想知道當涉及到性能時,「本地」客戶端和嵌入式版本之間有什麼區別。Hazelcast:Java本地客戶端和嵌入式版本之間的區別

  1. 「本地」客戶端是否可以連接到任何羣集節點並且對每個請求再次作出此決定是否正確?

  2. 使用嵌入式版本時,避免通過本地客戶端的TCP套接字發送所有請求和響應的開銷是否正確?

  3. 是否公平地斷定嵌入式版本通常比「本地」客戶端更快?

  4. 如果是「本地」客戶端:MapStore實現是否爲Hazelcast服務器的一部分(在運行時爲類)是正確的?還是它是「本地」客戶端的一部分,以便所有必須持久保存的數據首先通過TCP套接字發送?

回答

3
  1. 你給一組節點的原生客戶端連接。一旦它連接一個,它將使用此節點與集羣進行通信直到它死亡。當它死時,客戶端將連接到其他節點繼續通信。

  2. 使用本地客戶端時,客戶端與節點之間有兩跳,其中一個從節點到目標節點。 (目標節點是目標數據所在的節點)隨着嵌入式客戶端有單跳,因爲它已經知道所希望的數據的位置(目標節點)一般

  3. 是的,但是看到:(從hazelcast documentation

LiteMember是集羣中的一員,它具有插座連接 集羣中的每一個成員,它知道在哪裏的數據,因此將 獲取數據要快得多。但是LiteMember具有集羣開銷 ,即使在相同的RAC上它也必須位於同一個數據中心。 但是,本機客戶端不是成員,並且依賴於羣集 成員之一。本地客戶端可以位於LAN或WAN中的任何位置。它比 好得多,開銷也小得多。因此,如果您的客戶比Hazelcast節點少 ,則LiteMember可以成爲一個選項;否則 肯定會嘗試Native Client。作爲一個經驗法則:首先嚐試Native客戶端 ,如果它對您的性能不夠好,那麼考慮使用LiteMember 。

4-存儲操作在hazelcast服務器中執行。從客戶端發送的對象由目標節點持久保存到集中式數據存儲區,目標節點也將該對象存儲在其內存中。

相關問題