在節點啓動後,有沒有在hazelcast(版本3.4)節點上執行代碼片段的方法?在節點啓動時創建並填充Hazelcast地圖
這個想法是:一旦hazelcast節點開始創建映射(不等待在客戶端執行.getMap)並且從數據庫中彈出數據,以便當客戶端請求數據時,map已經被填充。
在節點啓動後,有沒有在hazelcast(版本3.4)節點上執行代碼片段的方法?在節點啓動時創建並填充Hazelcast地圖
這個想法是:一旦hazelcast節點開始創建映射(不等待在客戶端執行.getMap)並且從數據庫中彈出數據,以便當客戶端請求數據時,map已經被填充。
這可以通過在hazelcast.xml定義自定義的服務來解決。在節點啓動時調用服務構造函數,並從那裏請求和填充hazelcast地圖。 但是getMap的調用應該在新的線程中完成
是的。您需要爲您的IMap
實施MapLoader
,然後利用MapLoader.loadAllKeys()
方法使用熱鍵初始化地圖。
這是個什麼文件說:
您可以使用MapLoader.loadAllKeys API預填充 內存映射時,地圖第一次接觸/使用。如果 MapLoader.loadAllKeys返回NULL,則不會加載任何內容。您的 MapLoader.loadAllKeys實現可以返回全部或部分 密鑰。例如,您可以選擇並僅返回熱鍵。 MapLoader.loadAllKeys是預填充地圖 的最快方式,因爲Hazelcast將通過讓每個節點加載其所擁有的條目部分來優化加載過程。
問題是loadAllKeys在調用getMap(「當第一次觸摸/使用地圖時」)時被調用。 我需要一些方法來在節點被注視之後調用它,以確保它在工作時間之外發生。 – ataurenis
我建議在啓動節點啓動腳本時加入該步驟。 –