我在具有5个以上节点的群集中使用Hazelcast 3.4。我有一个地图,其中键是复杂的对象(不是原始类型)。在任何时候,地图的大小可能约为200K。
我知道地图中的条目/值将存储在不同的分区中。但是,我想知道以下内容。
2& 3是后续问题。
keySet()是分布式操作吗? (即它肯定会涉及集群环境中的远程机器通信)
localKeySet()是分布式操作吗?
关于这个问题的更多背景知识:
我需要通过调用第三方程序公开的服务cachedKeys(K []密钥),在规则的时间间隔内通知第三方程序关于程序中的hazelcast映射中存在的密钥。
选项1:从群集中任何一个的节点调用keySet()来检索地图中的所有键,然后调用cachedKeys(K []键)来自该节点的服务。
选项2:从群集中每个的节点调用localKeySet(),以识别每个节点拥有的本地密钥,然后是cachedKeys(K []键)来自每个节点的呼叫。
以上答案将帮助我选择正确的选项。
答案 0 :(得分:0)
会员不维护全局密钥集。每个成员只知道本地条目。因此,keySet()是一个命中所有成员的分布式操作,而localKeySet()只是一个本地操作。我希望这些信息对你有所帮助。
谷歌小组回答了问题:致谢:Jaromir Hamala