【问题标题】:Is hazelcast distributed-loading blocking?hazelcast 分布式加载是否阻塞?
【发布时间】:2016-12-15 17:15:27
【问题描述】:

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

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

在我的情况下,我不能阻塞集群 4 分钟(事实上一秒钟都没有)。

  1. 真的是 Imap.loadAll 阻塞了谓词查询吗?
  2. 可以将 imap 配置为非阻塞或存在 IMap.loadAll() 的非阻塞替代方案。

我正在尝试使用 HC 3.7.2,有 2 个节点和 java 8。

【问题讨论】:

    标签: java hazelcast hazelcast-imap


    【解决方案1】:

    这是一个合理的用例,但由于几个原因,它目前不受支持。 加载发生在分区线程上并因此阻塞它们 - 它提供一致性,在加载完成之前映射不会提供任何请求。

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

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

    【讨论】:

    猜你喜欢
    • 2017-08-26
    • 1970-01-01
    • 1970-01-01
    • 2020-09-16
    • 2011-04-09
    • 2017-01-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多