在 hazelcast 中使用分布式地图时如何只获取本地数据?

How to get only the local data when using a distributed map in hazelcast?

我正在为我的一个副项目研究 Hazelcast。我对Hazelcast的集群管理和分区能力特别感兴趣

在这个项目中,我有共享地图的节点,它们都会收到一个带有数字的请求。我希望这些节点中的每一个都查看它们的本地分区和 return 具有给定数字作为值的地图条目。

这是一个示例实现。我实际上想要实现的是了解如何使用 Hazelcast 来共享负载:我对 hazelcast 提供的分区重新平衡和集群管理感兴趣,但我想避免 get() 在一个distributed map 将在所有集群中造成get()

换句话说:我希望能够使用 hazelcast 来分发状态,但我希望节点仅在本地状态下运行。

这可能吗?

  1. 您可以通过IMap#localKeySet查看本地密钥。它 returns 本地拥有的不可变密钥集。

  2. 您还可以通过IMap#addLocalEntryListener跟踪本地地图的条目。假设您的集群有 member1 和 member2。在 member2 上,您添加了一个本地侦听器。然后,您从 member1 调用 map.put(key2, value2)。如果 key2 由 member2 所有,则本地侦听器将收到 add/update 事件的通知。

  3. 最后,您可以通过 IMap#getLocalMapStats 跟踪本地地图统计信息,以备不时之需。