2011-06-08 106 views
0

我有一個集羣在兩個WebSphere V7節點上的Java EE應用程序。如果客戶端更改了持久化到節點1上的數據庫的數據,我想確保數據在節點2上立即更新。如何同步服務器節點之間的數據?

我考慮使用EJB定時器服務,每隔幾分鐘檢查一次數據庫。但是如果我想要在時間上執行更新,節點2沒有任何延遲並且沒有將間隔設置爲一秒左右,我該怎麼辦?那麼我可以從節點1調用節點2上的servlet,並以這種方式觸發更新。但在這種情況下,我的應用程序必須知道所有節點的http地址。這不是我想要的。還有其他建議嗎?

在服務器節點之間是否存在同步數據更改的最佳做法?

回答

0

我會推薦使用提供不同同步方法的Jboss JGroups。

+0

那麼我寧願爲我的問題使用更輕量級的解決方案 - 如果可能的話,不使用額外的瓶子或框架。 – mwalter 2011-06-09 07:09:43

+0

我明白了。但是,即使您不使用Jgroups實現,jgroups文檔也提供了一些可能有用的模式。 – HamoriZ 2011-06-09 08:17:22

0

假設您的兩個WebSphere節點與同一個數據庫對話並且您尚未添加任何形式的緩存,那麼只要節點2在數據庫上運行SQL查詢,數據就會立即可用。

我錯過了你的問題嗎?

+0

事情是我在應用程序啓動時將主數據加載到單例POJO中。初始化後,所有請求都使用單例訪問此數據,以避免額外(且長時間運行)的主數據數據庫訪問。但是因爲應用程序是聚類的,所以我不幸有兩個單例(每個節點上有一個單元),我必須保持同步... – mwalter 2011-06-14 07:27:57

1

由於您使用的是WebSphere,我建議使用內置於WAS中的DistributedMap

+0

嗯..聽起來很有希望。但是我沒有讀到有關服務器節點之間同步的任何信息。它看起來更像是JSP和servlet輸出的常見緩存?你有更多的信息/經驗嗎? – mwalter 2011-06-29 14:37:30

相關問題