在 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 来分发状态,但我希望节点仅在本地状态下运行。
这可能吗?
您可以通过IMap#localKeySet查看本地密钥。它 returns 本地拥有的不可变密钥集。
您还可以通过IMap#addLocalEntryListener跟踪本地地图的条目。假设您的集群有 member1 和 member2。在 member2 上,您添加了一个本地侦听器。然后,您从 member1 调用 map.put(key2, value2)
。如果 key2 由 member2 所有,则本地侦听器将收到 add/update 事件的通知。
最后,您可以通过 IMap#getLocalMapStats 跟踪本地地图统计信息,以备不时之需。
我正在为我的一个副项目研究 Hazelcast。我对Hazelcast的集群管理和分区能力特别感兴趣
在这个项目中,我有共享地图的节点,它们都会收到一个带有数字的请求。我希望这些节点中的每一个都查看它们的本地分区和 return 具有给定数字作为值的地图条目。
这是一个示例实现。我实际上想要实现的是了解如何使用 Hazelcast 来共享负载:我对 hazelcast 提供的分区重新平衡和集群管理感兴趣,但我想避免 get()
在一个distributed map 将在所有集群中造成get()
。
换句话说:我希望能够使用 hazelcast 来分发状态,但我希望节点仅在本地状态下运行。
这可能吗?
您可以通过IMap#localKeySet查看本地密钥。它 returns 本地拥有的不可变密钥集。
您还可以通过IMap#addLocalEntryListener跟踪本地地图的条目。假设您的集群有 member1 和 member2。在 member2 上,您添加了一个本地侦听器。然后,您从 member1 调用
map.put(key2, value2)
。如果 key2 由 member2 所有,则本地侦听器将收到 add/update 事件的通知。最后,您可以通过 IMap#getLocalMapStats 跟踪本地地图统计信息,以备不时之需。