Hazelcast MapLoader性能 - 强制从数据库加载所有值

时间:2017-05-02 12:29:21

标签: cluster-computing database-performance hazelcast hazelcast-imap

我们如何强制在启动时加载所有值,并且通过单个数据库调用来完成此操作?配置急切加载的maploader似乎不这样做?相反,会加载单个值,这意味着大量往返数据库。

MapLoader实现代码段如下所示:

public V load(K key) {
   // issues a SQL query
   return databaseService.findByPrimaryKey(key);
}

Config看起来像这样:     mapStoreCfg.setImplementation(装载机)
       .setInitialLoadMode(MapStoreConfig.InitialLoadMode.EAGER)

1 个答案:

答案 0 :(得分:0)

MapLoader界面如下所示

public interface MapLoader<K, V> {

    V load(K key);

    Map<K, V> loadAll(Collection<K> keys);

    Iterable<K> loadAllKeys();

}

现在,

  • MapLoading orchestrator执行loadAllKeys
  • 然后它执行hashing密钥并根据散列算法将所有密钥分批分发到所有分区,以便每个分区获取分区负责的密钥
  • 每个分区都loadAll(Collection<K> keys);,其中keys是每个分区从MapLoading orchestrator获取的密钥。

因此,

  • 有一个loadAllKeys()调用
  • N loadAll(Collection<K> keys)个调用,每个分区执行一个调用,以便为每批密钥调用loadAll(Collection<K> keys)