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