2

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

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

  1. Hazelcast 集群中的每个成员是否维护有关给定映射中所有键的集合的信息,或者仅维护有关其拥有的分区中这些键的子集的信息?

2 & 3 是后续问题。

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

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

关于这个问题的更多背景:

我需要通过调用第三方程序公开的服务 cachedKeys(K[] keys) 定期通知第三方程序有关我程序中 hazelcast 映射中存在的键的信息。

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

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

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

4

1 回答 1

2

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

问题在谷歌群组中得到了回答:学分:Jaromir Hamala

于 2015-10-04T11:18:37.733 回答