【问题标题】:Create and populate Hazelcast map on node startup在节点启动时创建和填充 Hazelcast 地图
【发布时间】:2016-12-27 16:26:18
【问题描述】:

有没有办法在节点启动后在 hazelcast(3.4 版)节点上执行代码片段?

这个想法是:一旦 hazelcast 节点之一开始创建地图(不等待 .getMap 在客户端执行)并从数据库中填充数据,因此当客户端请求数据时,地图已经填充。

【问题讨论】:

    标签: java hazelcast hazelcast-imap


    【解决方案1】:

    是的。您需要为您的IMap 实现MapLoader,然后使用MapLoader.loadAllKeys() 方法用热键初始化地图。

    这就是文档所说的:

    您可以使用 MapLoader.loadAllKeys API 预填充 首次触摸/使用地图时的内存中地图。如果 MapLoader.loadAllKeys 返回 NULL 则不会加载任何内容。您的 MapLoader.loadAllKeys 实现可以返回全部或部分 键。例如,您可以只选择并返回热键。 MapLoader.loadAllKeys 是预填充地图的最快方式 因为 Hazelcast 将通过让每个节点优化加载过程 加载其拥有的条目部分。

    3.5 Map Persistence Documentation Link

    【讨论】:

    • 问题是在调用getMap(“当第一次触摸/使用地图时”)时调用了loadAllKeys。我需要一些方法在节点启动后立即调用它,以确保它发生在工作时间之外。
    • 我建议在节点启动脚本中启动节点时包含该步骤。
    【解决方案2】:

    这可以通过在 hazelcast.xml 中定义自定义服务来解决。服务构造函数在节点启动时被调用,并且可以从那里请求和填充 hazelcast 地图。 但是getMap的调用应该在new Thread中完成

    【讨论】:

      猜你喜欢
      • 2017-01-17
      • 1970-01-01
      • 2018-04-30
      • 2013-05-05
      • 2019-10-16
      • 1970-01-01
      • 2015-09-12
      • 1970-01-01
      • 2012-01-27
      相关资源
      最近更新 更多