首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Hazelcast分布式映射:默认驱逐策略是什么?

Hazelcast分布式映射:默认驱逐策略是什么?
EN

Stack Overflow用户
提问于 2019-03-28 16:03:52
回答 2查看 5.8K关注 0票数 0

我在Hazelcast中有一个分布式地图,类似于:

代码语言:javascript
运行
复制
ClientConfig clientConfig = new ClientConfig();
clientConfig.getGroupConfig().setName("clusterName").setPassword("clusterPWD");
clientConfig.getNetworkConfig().addAddress("X.X.X.X");
clientConfig.setInstanceName(InstanceName);
HazelcastInstance instance =  HazelcastClient.newHazelcastClient(clientConfig);
[...]
map = instance.getMap("MAP_NAME");
[...]
// a lot of map.put();
[...]
// a lot of map.get();

我需要避免OOM问题,每次都要清理缓存。

编辑:看起来默认的策略不是驱逐,所以有必要用一些策略来清理缓存。我尝试使用以下配置在类路径中添加hazelcast-client.xml

代码语言:javascript
运行
复制
<near-cache name="wm_info">
        <max-size>3</max-size>
        <time-to-live-seconds>5</time-to-live-seconds>
        <max-idle-seconds>5</max-idle-seconds>
        <eviction-policy>LRU</eviction-policy>
        <invalidate-on-change>true</invalidate-on-change>
        <in-memory-format>OBJECT</in-memory-format>
</near-cache>

两者都添加了此代码

代码语言:javascript
运行
复制
EvictionConfig evictionConfig = new EvictionConfig()
.setEvictionPolicy(EvictionPolicy.LRU)
.setSize(2);

NearCacheConfig nearCacheConfig = new NearCacheConfig()
.setName(WM_MAP_NAME)
.setInMemoryFormat(InMemoryFormat.BINARY)
.setInvalidateOnChange(true)
.setTimeToLiveSeconds(5)
.setEvictionConfig(evictionConfig);

clientConfig.addNearCacheConfig(nearCacheConfig);

但不起作用。缓存项目即使在几分钟后仍在缓存中。

EDIT2:它唯一的工作方式似乎是:

Map.put(代码,json,5,TimeUnit.SECONDS);

有其他选择吗?

谢谢安德里亚

EN

回答 2

Stack Overflow用户

发布于 2019-03-28 16:42:07

默认情况下,没有为map配置驱逐/过期,如果您不希望map超过阈值,则必须显式配置。如果您一直使用默认配置将条目放入映射中,您最终会得到OOM。

下面是一个映射配置,它使用最近最少使用的策略启用逐出。当map大小达到配置的阈值时,一些条目将被逐出。

如果你也想让这些条目过期,你可以配置生存时间秒数和最大空闲秒数。

代码语言:javascript
运行
复制
  <map name="default">
    ...
    <time-to-live-seconds>0</time-to-live-seconds>
    <max-idle-seconds>0</max-idle-seconds>
    <eviction-policy>LRU</eviction-policy>
    <max-size policy="PER_NODE">5000</max-size>
    ...
  </map>
</hazelcast>

请参阅documentation https://docs.hazelcast.org/docs/3.11.2/manual/html-single/index.html#map-eviction的地图逐出部分

票数 1
EN

Stack Overflow用户

发布于 2019-04-01 09:59:39

为了补充Ali所评论的内容,您必须在集群映射端添加某种大小限制(条目数量、内存大小等)。然后添加一个驱逐策略,告诉Hazelcast在达到阈值并需要输入新值时驱逐哪些条目。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55392697

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档