Hazelcast IMap:keySet()与localKeySet()

时间:2015-09-21 14:12:44

标签: java distributed hazelcast distributed-caching hazelcast-imap

我在具有5个以上节点的群集中使用Hazelcast 3.4。我有一个地图,其中键是复杂的对象(不是原始类型)。在任何时候,地图的大小可能约为200K。

我知道地图中的条目/值将存储在不同的分区中。但是,我想知道以下内容。

  1. Hazelcast群集中的每个成员是否维护有关给定地图中所有密钥集的信息,或仅保留其拥有的分区中这些密钥的子集?
  2. 2& 3是后续问题。

    1. keySet()是分布式操作吗? (即它肯定会涉及集群环境中的远程机器通信)

    2. localKeySet()是分布式操作吗?

    3. 关于这个问题的更多背景知识:

      我需要通过调用第三方程序公开的服务cachedKeys(K []密钥),在规则的时间间隔内通知第三方程序关于程序中的hazelcast映射中存在的密钥。

      选项1:从群集中任何一个的节点调用keySet()来检索地图中的所有键,然后调用cachedKeys(K []键)来自该节点的服务。

      选项2:从群集中每个的节点调用localKeySet(),以识别每个节点拥有的本地密钥,然后是cachedKeys(K []键)来自每个节点的呼叫。

      以上答案将帮助我选择正确的选项。

1 个答案:

答案 0 :(得分:0)

会员不维护全局密钥集。每个成员只知道本地条目。因此,keySet()是一个命中所有成员的分布式操作,而localKeySet()只是一个本地操作。我希望这些信息对你有所帮助。

谷歌小组回答了问题:致谢:Jaromir Hamala