hazelcast分布式加载阻塞?

时间:2016-12-14 23:24:08

标签: java hazelcast hazelcast-imap

目前,我有一个支持MapStore的IMap。此IMap在启动时加载并具有数百万条目。当映射完全加载时,客户端使用带谓词的Imap.values()检索条目。这个加载在启动时对我来说很好。

现在,我必须在peridiocally重新加载所有数据(例如,每2小时)。我正在使用IMap.loadAll(true)来强制重新加载。 MapStore(loadAllKeys()+ loadAll(keys))大约需要4分钟才能完成整个加载。似乎在这4分钟内,所有通过谓词向imap发送查询的客户端都会被阻塞,直到重新加载完成。

在我的情况下,我无法阻止群集4分钟(事实上也不是一秒钟)。

  1. 真的是阻止谓词查询的Imap.loadAll吗?
  2. 可以将imap配置为非阻塞,或者是IMap.loadAll()的非阻塞替代。
  3. 我正在尝试使用HC 3.7.2,包含2个节点和java 8。

1 个答案:

答案 0 :(得分:0)

这是一个明智的用例,但由于几个原因,它目前尚未得到支持。 加载发生在分区线程上,从而阻塞它们 - 它提供了一致性,在加载完成之前,映射不会提供任何请求。

对于“重新加载”的用例,它必须不在分区线程上发生,以便可以提供请求。

你能在github上创建一个功能请求吗? 看起来我们可以在下一个版本中解决这个问题。