2016-03-30 57 views
0

我在Hazelcast集羣中有一個IAtomicReference。Hazelcast IAtomicReference僅在集羣中的某些節點上

IAtomicReference<Monitor> ref = ... 

當我更新使用alterAndGetIFunction<Monitor, Monitor>一個值傳遞到分佈式原子參考。

提供的函數可以在羣集中的任何Hazelcast節點上執行,但是我想確保它只在一些節點上執行(總共8個節點中的節點1,2,3或4)。

我的理解是,Hazelcast可能會選擇在任何節點上存儲IAtomicReference,並且這是執行提供的更改函數的節點。所以我想我需要的是指定IAtomicReference只能存儲在某些節點上。

也許值得一提的是,其他節點(5,6,7和8)根本不需要訪問IAtomicReference。

我該如何做到這一點?

回答

1

因爲分區可以四處移動,所以如果依靠分區,則無法完美控制該分區。所以在某些時候它可能在成員1上,但稍後它可能在成員2上。

如果您確實想要控制任務要運行的位置;你可以看看IExecutorService.submit(任務,某些成員)

+0

另一個選項是啓動一些成員爲「精簡版成員」 - 這是Hazelcast 3.6中的一項新功能。 Lite會員不擁有任何數據。然而,這是全部或沒有任何情況。 –

+0

我不明白,是IAtomicReference分區?也不是我想要在特定節點上運行代碼,我只是不希望它在一系列節點上運行。我能否以某種方式指定給定的IAtomicReference可能只能在一系列節點上? – Neovibrant

+0

@Jaromir Hamala不幸的是,我不能使用lite成員,因爲我有其他類型的數據(主要是地圖),我需要在這些其他節點上... – Neovibrant

相關問題