Hazelcast - 通用地图配置

时间:2018-01-22 13:40:16

标签: java xml hazelcast hazelcast-imap

我使用hazelcast 3.9和spring boot作为缓存后端,并使用多个分布式地图作为缓存的数据结构。地图的大多数配置参数都很常见,例如备份计数,驱逐政策等,但有些可能不同,比如生存时间。

我是否可以使用我可以使用的公共地图配置作为不同地图配置中的参考?

我发现有些人在某些开源回购中使用<map name="default">,看起来他们希望这个配置被其他地图配置覆盖,但它对我不起作用。

这是我目前正在使用的配置:

<?xml version="1.0" encoding="UTF-8"?>
<hazelcast
        xsi:schemaLocation="http://www.hazelcast.com/schema/config https://hazelcast.com/schema/config/hazelcast-config-3.9.xsd"
        xmlns="http://www.hazelcast.com/schema/config"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

    <group>
        <name>something</name>
        <password>something</password>
    </group>

    <properties>
        <property name="hazelcast.partition.count">83</property>
    </properties>

    <management-center enabled="true" update-interval="3">http://localhost:8081/mancenter</management-center>
    <network>
        <join>
            <multicast enabled="true"/>
        </join>
    </network>

    <map name="map1">
        <!--<max-size policy="PER_NODE">273</max-size>-->
        <max-size policy="USED_HEAP_PERCENTAGE">20</max-size>
        <eviction-policy>LFU</eviction-policy>
        <statistics-enabled>true</statistics-enabled>
        <backup-count>0</backup-count>
        <async-backup-count>1</async-backup-count>
        <read-backup-data>true</read-backup-data>

        <time-to-live-seconds>10800</time-to-live-seconds>  <!--3 hours-->
    </map>

    <map name="map2">
        <!--<max-size policy="PER_NODE">273</max-size>-->
        <max-size policy="USED_HEAP_PERCENTAGE">20</max-size>
        <eviction-policy>LFU</eviction-policy>
        <statistics-enabled>true</statistics-enabled>
        <backup-count>0</backup-count>
        <async-backup-count>1</async-backup-count>
        <read-backup-data>true</read-backup-data>

        <time-to-live-seconds>86400</time-to-live-seconds>  <!--24 hours-->
    </map>


</hazelcast>

我对使用xmls不是很熟悉,但我试图找到一些方法来引用其他xml元素中的xml元素,但这似乎也没有用。看起来在hazelcast配置架构中不允许使用DOCTYPE属性。

我还希望通过代码避免使用hazelcast配置。

1 个答案:

答案 0 :(得分:4)

Hazelcast支持在群集中配置的大多数数据结构的通配符配置。使用名称中的星号(*)字符,可以通过单个配置配置不同的映射,队列,主题,信号量等实例。请参阅以下示例:

<map name="map*">
    <max-size policy="USED_HEAP_PERCENTAGE">20</max-size>
    <eviction-policy>LFU</eviction-policy>
    <statistics-enabled>true</statistics-enabled>
    <backup-count>0</backup-count>
    <async-backup-count>1</async-backup-count>
    <read-backup-data>true</read-backup-data>
</map>

通过使用此配置,map1map2将具有完全相同的配置。但是如果要使用基本配置添加更多配置元素(例如time-to-live-seconds),则需要使用编程配置。