2014-10-29 56 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