我們的應用程序使用Hibernate Search來索引它的一些數據。該應用程序在兩個JBoss EAP 6.2應用程序服務器上運行,用於負載分配和故障轉移。我們需要在一臺機器上進行的更改立即可見。索引是應用程序的核心部分,需要與數據庫數據保持一致。完全重建需要很長時間,因此即使在服務器崩潰的情況下,重要的是它仍然保持完整。另外,索引預計會變得太大而無法將其全部保存在內存中。使用Hibernate Search和Lucene設置分佈式索引
我們當前的解決方案是使用帶有共享文件系統(NFS)和JGroups後端的標準文件系統目錄,以確保只有一臺服務器隨時寫入給定索引。這或多或少地起作用,但有時我們遇到索引更新很長(最多20秒)或完全失敗的問題。由於其他原因,我們需要從當前使用的文件系統遷移,因此我們正在評估當前設置的替代方案。
我們嘗試過的一件事是帶有文件緩存存儲區的Infinispan目錄,但我們在OutOfMemoryErrors方面存在一些問題(另請參閱我在Infinispan論壇中的帖子https://developer.jboss.org/thread/253732)。此外,在我們的第一次測試中(我的開發人員計算機上設置了兩個羣集服務器的索引更新大約3秒),性能仍然不可接受,但這可能是由於配置問題。
我認爲這不是一個不常見的要求,但我找不到有關實施它的最佳實踐的很多信息。
誰有類似的設置經驗? Infinispan目錄是否適合你?任何人都可以提出一個工作配置,或者如何繼續到達一個配置?你嘗試過哪些方法,哪些方法有效?
較新版本的Hibernate Search和Infinispan目錄有大量的性能改進,您不需要使用EAP內部的版本。例如,您可以使用JBoss Data Grid提供的模塊,這些模塊包含Hibernate Search和Infinispan目錄的更新版本:http://www.jboss.org/products/datagrid/download/。 這些模塊位於現有EAP模塊之上,幷包含一個單獨的「插槽」,您可以依賴該插槽而不與內部庫衝突。你嘗試過這條路線嗎? – gnf 2015-04-13 09:02:55
您嘗試過哪些JGroups後端?有一個靜態主選擇(通過配置),一個嘗試自動選舉,但這是實驗性的。我會盡力幫助Infinispan相關的問題,但我很想知道您嘗試過哪些替代方案。 – Sanne 2015-04-16 11:34:16
我們使用自動選舉後端,因爲我們需要其他節點在一個節點失敗時自動接管。 – lbilger 2015-04-17 12:08:11