48 lines
2.8 KiB
Java
48 lines
2.8 KiB
Java
package com.diagnose.common.config.cache;
|
||
|
||
import com.hazelcast.config.InMemoryFormat;
|
||
|
||
import java.util.HashMap;
|
||
import java.util.Map;
|
||
|
||
import static com.diagnose.common.config.cache.CacheKey.*;
|
||
|
||
public class CacheConfig {
|
||
|
||
public static final String DEFAULT_MAP_NAME = "default";
|
||
|
||
public static class LocalMapConfig {
|
||
public final int maxSize;
|
||
public final int liveSeconds;
|
||
public final InMemoryFormat inMemoryFormat;
|
||
|
||
LocalMapConfig(int maxSize, int liveSeconds) {
|
||
this.maxSize = maxSize;
|
||
this.liveSeconds = liveSeconds;
|
||
this.inMemoryFormat = InMemoryFormat.BINARY;
|
||
}
|
||
|
||
LocalMapConfig(int maxSize, int liveSeconds, InMemoryFormat inMemoryFormat) {
|
||
this.maxSize = maxSize;
|
||
this.liveSeconds = liveSeconds;
|
||
this.inMemoryFormat = inMemoryFormat;
|
||
}
|
||
}
|
||
|
||
public static Map<String, LocalMapConfig> getConfigMap() {
|
||
// 设置近地缓存实时同步,不采用批量提交策略
|
||
System.setProperty("hazelcast.map.invalidation.batch.enabled", "false");
|
||
// PER_NODE:max-size指定单个集群成员中map条目的最大数量。这是max-size的默认策略。如果使用这个配置,需要注意max-size的值必须大于分区的数量(默认为271)。
|
||
// PER_PARTITION:max-size指定每个分区存储的map条目最大数。这个策略建议不要在小规模的集群中使用,因为小规模的集群,单个节点包含了大量的分区,在执行回收策略时,会去按照分区的划分组个检查回收条件,导致效率低下。
|
||
// USED_HEAP_SIZE:指在每个Hazelcast实例中,max-size指定map所占用的内存堆的(以megabytes计算,兆字节)最大值。需要注意这个策略不能工作在in-memory-format=OBJECT,因为当数据被设置为OBJECT时,无法确定所占用的内存大小。
|
||
// USED_HEAP_PERCENTAGE:每个Hazelcast实例中,max-size指定map占用内存堆的百分比。例如,JVM被设置有1000MB,而这个值设置为max-size=10,当map条目数占用的堆数据超过100MB时,Hazelcast开始执行数据释放工作。需要注意的是当使用这个策略时,不能将in-memory-format设置为OBJECT,理由同上。
|
||
// FREE_HEAP_SIZE:max-size指定了单个JVM的堆最小空闲空间,单位为megabytes。
|
||
// FREE_HEAP_PERCENTAGE:max-size指定单个JVM的最小空闲空间的百分比。例如JVM分配了1000MB的空间,这个值设置为10,当空闲堆只有100MB时,会引发map的数据清除放行为。
|
||
// 当map条数超过10000,会引发map的数据清除行为
|
||
Map<String, LocalMapConfig> configMap = new HashMap<>();
|
||
configMap.put(DISTRIBUTED_LOCK, new LocalMapConfig(1000, 0));
|
||
|
||
return configMap;
|
||
}
|
||
}
|