【问题标题】:Using a MapLoader for a Hazelcast distributed map within a client在客户端中使用 MapLoader 获取 Hazelcast 分布式地图
【发布时间】:2012-05-15 14:47:02
【问题描述】:

我正在评估 Hazelcast 作为我正在开发的应用程序的分布式数据网格解决方案。 Hazelcast 设置在分布式集群上,我的应用程序使用 Spring 以这种方式定义 Hazelcast 客户端:

<hz:client id="hazelcastClient" group-name="dev" group-password="dev-pass">
<hz:member>localhost:5701</hz:member>
</hz:client>

在我的 Hazelcast 节点上,在 hazelcast.xml 文件中,我设置了一个地图,其中包含所需的所有配置。假设这张地图名为myMap。使用 Hazelcast webapp 进行监控时,我可以看到这张地图设置正确(mancenter)。

我现在必须在应用程序端配置映射以注入到我的 bean 中。如果我做类似的事情

<hz:map id="myMap" instance-ref="hazelcastClient" name="myMap" />

我将这个映射注入到包含获取逻辑的 bean 中,我没有遇到任何问题。

但是,我还编写了一个实现MapLoader 接口的类,以处理缓存中丢失的数据。我现在的问题是我不知道如何将此Maploader 绑定到我定义的缓存。如果我尝试类似

<hz:map id="myMap" instance-ref="hazelcastClient" name="myMap">
    <hz:map-store enabled="true" implementation="myMapLoader"/>
</hz:map>

我收到一个 XML 解析错误,因为似乎当 hz:map 用作顶级元素(而不是在 hz:config 中,例如)时,您无法指定内部元素。这让我觉得你需要定义一个hz:config 元素。但是,如果您可以为客户端定义 hz:config 元素,则从文档中不是很清楚。对我来说,如果您希望您的应用程序成为集群的一部分,您似乎需要使用hz:config。但是我不确定我的应用程序应该成为集群的一部分在逻辑上是否正确 - 它基本上是数据网格的客户端。

您对如何配置我的应用程序以实现我想要的行为有任何想法吗?

【问题讨论】:

    标签: spring hazelcast


    【解决方案1】:

    不能在客户端配置地图。您应该在 Hazelcast 节点上配置 myMap 及其 MapLoader/MapStore。 MapStore/MapLoader 操作由拥有数据的 Hazelcast 节点执行,而不是由客户端执行。

    Hazelcast 节点

    <hz:config>
        ...
        <hz:map name="myMap" backup-count="1" max-size="0">
            <hz:map-store enabled="true" implementation="myMapLoader" />
        </hz:map>
        ...
    </hz:config>
    

    -或- 使用 hazelcast.xml

    <map name="myMap">
        <backup-count>1</backup-count>
        <time-to-live-seconds>0</time-to-live-seconds>
        <max-idle-seconds>0</max-idle-seconds>
    
        <map-store enabled="true">
            <class-name>foo.bar.MyMapLoader</class-name>
            <write-delay-seconds>0</write-delay-seconds>
        </map-store>
    </map>
    

    在客户端只需实例化myMap;

    <hz:map id="myMap" instance-ref="hazelcastClient" name="myMap" />
    

    当客户端放入/获取该地图时,处理客户端请求的节点将调用 MapLoader/MapStore。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多