我在具有 5 个以上节点的集群中使用 Hazelcast 3.4。我有一张地图,其中键是复杂对象(不是原始类型)。在任何时候,地图的大小都可能在 200K 左右。
我了解地图中的条目/值将存储在不同的分区中。但是,我想知道以下内容。
- Hazelcast 集群中的每个成员是否维护有关给定映射中所有键的集合的信息,或者仅维护有关其拥有的分区中这些键的子集的信息?
2 & 3 是后续问题。
keySet() 是分布式操作吗?(即它肯定会涉及集群环境中的远程机器通信)
localKeySet() 是分布式操作吗?
关于这个问题的更多背景:
我需要通过调用第三方程序公开的服务 cachedKeys(K[] keys) 定期通知第三方程序有关我程序中 hazelcast 映射中存在的键的信息。
选项 1:从集群中的任何一个节点调用 keySet()以检索映射中的所有键,然后从该节点调用 cachedKeys(K[] keys) 服务。
选项 2:从集群中的每个节点调用 localKeySet()以识别每个节点拥有的本地密钥,然后从每个节点调用 cachedKeys(K[] keys)。
以上答案将帮助我选择正确的选项。