2014-10-29 43 views
1

如果Hazelcast中有多個節點,則IMap.size()方法中的返回值是否會返回該節點中映射的大小或與通過所有節點分發的映射關聯的所有對象的總大小?IMap Hazelcast大小操作

通過javadocs來看,它並不顯示被覆蓋的方法,所以我想象方法調用將不會返回通常在非分佈式映射中預期的方法。

回答

1

它返回完整的分佈式地圖的估計大小。估計是因爲它只是在給定的時間點獲取分區中元素的數量,因爲多個分區一個接一個地操作,並不需要100%真實的數量,但是如果您獲得大小但不會突變實際地圖。

+0

也許我誤解了一些東西。如果我打電話IMAP iMap = hazelcastInstance.getMap(mapName),我返回的地圖不一定包含所有元素,只是發生在本地存儲的元素是正確的?只有當我請求一個沒有存儲在地圖上的對象時,它纔會打電話給它? – DavidR 2014-10-29 21:09:38

+0

這是正確的,但IMap :: size是一個分佈式操作,並請求所有節點的本地大小並累積它們。由於該操作是分佈式的,可能需要「一些」時間,但該集羣不會停止響應平均值,而它僅被視爲估計值。 – noctarius 2014-10-30 04:59:54