我正在研究 Hazelcast 的一个副项目。我对 Hazelcast 的集群管理和分区功能特别感兴趣。
在这个项目中,我有共享地图的节点,它们都会收到一个带有数字的请求。我希望这些节点中的每一个都查看其本地分区并返回具有给定数字作为值的地图条目。
这是一个示例实现。我真正想要实现的是了解如何使用 Hazelcast 来共享负载:我对 hazelcast 提供的分区重新平衡和集群管理感兴趣,但我想避免 get()
在分布式地图将在所有集群中导致 get()
。
换句话说:我希望能够使用hazelcast来分发状态,但我希望节点仅在本地状态下运行。
这可能吗?
答案 0 :(得分:0)
您可以通过 IMap#localKeySet 查看本地密钥。它返回本地拥有的不可变密钥集。
您还可以通过 IMap#addLocalEntryListener 跟踪本地地图的条目。假设您的集群有 member1 和 member2。在 member2 上,您添加了一个本地侦听器。然后,从 member1 调用 map.put(key2, value2)
。如果 key2 归 member2 所有,则本地侦听器将收到添加/更新事件的通知。
最后,您可以通过 IMap#getLocalMapStats 跟踪本地地图统计数据,以防万一。