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



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

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

这是一个示例实现。我实际上要实现的是了解如何使用 Hazelcast 来分担负载:我对 hazelcast 提供的分区重新平衡和集群管理感兴趣,但我想避免分布式映射中的get()会导致所有集群get()

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

这可能吗?

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

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

  3. 最后,您可以通过IMap#getLocalMapStats跟踪本地地图统计信息,以防它们有所帮助。

最新更新