2012-04-06 66 views
0

我正在研究一個應用程序,該應用程序到目前爲止已在單個服務器上運行在JBoss AS上。現在需要故障轉移,我們正在添加另一臺服務器並創建一個JBoss集羣。這是問題:複製多個服務器之間的緩存數據

到目前爲止,應用程序使用Hashmap來存儲大約200萬條從數據庫中獲取的記錄。 現在我必須將這些數據複製到第二個節點(未來可能會添加更多節點)。 我們需要存儲的數據現在更有可能是500萬條記錄。

我只想對存儲此鍵/值類型數據並將其複製到所有服務器節點上的最佳方法有什麼意見。

我一直在想,如果Redis或memcached會是一個合適的解決方案?如何JBoss緩存,我知道它是分佈式緩存,並複製到羣集中的所有節點。

這裏有事情我最擔心的:對性能

  1. 效果 - 複製會導致網絡延遲,數據
  2. 質量 - 希望避免與陳舊的數據影響對內存的工作 -
  3. 一次數據在HashMap/Cache中加載它不應該過期。可能會添加或刪除一些記錄,這些更改將不得不在所有節點上進行復制。
  4. 的可擴展性 - 正如我所說...更多節點可以增加

對此有何想法受到了高度評​​價。

+0

複製一致性! Aaargh!拿起一些中間件:) – PhD 2012-04-07 06:10:09

回答

1

由於您在Java環境中工作,我建議您查看hazelcast(http://www.hazelcast.com/)。我們正在使用它來同步多個門戶服務器,並且它工作得非常好!

+0

嗨csupnig。您是否將hazelcast與其他替代緩存(如JBoss Cache)進行了比較?您正在使用它的hazelcast的明顯優勢是什麼? – sul 2012-04-08 23:14:47

+0

我們之前使用過JCSCache,並決定切換到hazelcast,因爲它還支持將消息發送到其他服務器實例,進一步提高了同步功能...... – csupnig 2012-04-08 23:31:09