這裏是我們的用例:分佈式緩存使用情況與Hazelcast
我們有實現分佈式緩存hazelcast每個 節點可以通過JMS具有相同的事務密鑰獲得多條消息,我們添加4-8節點緩存中的所有消息與對象所在的鍵 - 對象對一起緩存項目列表
聚合通過apache-camel完成,其中聚合器運行300個MILLISECS 在300個MILLISECS之後,我們關閉聚集窗口並從緩存中清除與事務密鑰相對應的所有項目並以編程方式聚合它們。 Hazelcast的作用僅是收集信息在高速緩存中的地圖,並保持所有節點同步,其中,所有節點都知道在高速緩存中 問題場景是什麼物品:
- 節點1在高速緩存中的交易增加了物品1 -key = tx1 at 17:01:01:100 - 並且我們假設hazelcast將這個信息廣播給其他節點,使得所有節點獲得緩存項目的副本。
- 節點2在17:01:01:105處爲transaction-key = tx1在緩存中添加item2節點3在緩存中爲transaction-key = tx1在17:01:01:350處添加item3 現在,假設在17:01:01:400,我們嘗試使用事務鍵= TX1從緩存關閉聚合窗口和編程驅逐所有項目
的問題是,節點1,節點知道物品1和item2,因爲他們有時間來同步他們的緩存項目。但是node3添加item3的時間太晚,以至於node1和node2在17:01:01:400不知道item3。 假設我們在17:01:01:400開始從不知道item3的node1開始驅逐,它會給我們一個只有2個項目的對象 然後node1將廣播給所有人以驅逐所有緩存項目,響應鍵= TX1到所有節點將清除緩存事務鍵= TX1 這導致丟失物品(項目3)
得到任何幫助。
我試圖回答您的問題。如果您需要更多幫助,請在您的問題中添加更多相關詳細信息。 – Dinesh