簡體   English   中英

在與謂詞鍵[Hazelcast]相同的節點上獲取IMap條目

[英]Get IMap entries on same node as Predicate keys [Hazelcast]

我正在使用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);
    }
...

我猜您正在尋找的是EntryProcessor 該EP還必須實現HazelcastInstanceAware才能訪問其他數據結構。 應用數據親和力仍然很重要,就像您已經做過的那樣,以確保屬於一起的數據存儲在同一分區內,以便可以訪問。

有關EntryProcessor的更多信息,請參閱文檔( http://docs.hazelcast.org/docs/3.6/manual/html-single/#entry-processing-with-imap-methods ),並在我們的示例中找到示例倉庫( https://github.com/hazelcast/hazelcast-code-samples/tree/master/distributed-map/entry-processor )。

隨時詢問更多信息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM