我正在使用 Hazelcast 3.6 IMap 来分布式存储大量数据(我已经在 1B 项上进行了测试)。我想通过键加入 2 个 IMap 实例,但似乎没有任何内置功能可以做到这一点。@PatritionAware
因此,如果键相等,我将使用将这些映射的条目存储在同一节点中,然后Set<K> localKeySet();
在类的每个成员上使用第一个映射。之后,我尝试从同一节点上的第二个映射中获取值,以避免通过网络传输谓词键。但似乎getAll(Set<K> keys)
不在同一个节点上这样做。有人已经有同样的问题了吗?是否可以根据 Hazelcast 功能解决它?
请参阅下面的代码示例
public class PartitionAwareKey implements PartitionAware, Serializable { private Integer key; public PartitionAwareKey(Integer key) { this.key = key; } @Override public Integer getPartitionKey() { return this.key; } }
public class FindDataWithPredicateTask implements HazelcastInstanceAware, Serializable, Callable>> { ... @Override public IMap call() throws Exception { IMap map1 = hazelcastInstance.getMap("map1"); Set localKeySet = map1.localKeySet(); IMap, String> map2 = hazelcastInstance.getMap("map2"); return map2.getAll(localKeySet); } ...