前阵子用 ehcache 做缓存集群 , 现在结束了 , 所以整理了下配置文件的注释 , 有些是自己翻译的 , 仅供参考
<cacheManagerPeerProviderFactory
class="net.sf.ehcache.distribution.jgroups.JGroupsCacheManagerPeerProviderFactory"
properties="connect=TCP(start_port=7800):
TCPPING(initial_hosts=127.0.0.1[7800];port_range=10;timeout=3000;num_initial_members=3;up_thread=true;down_thread=true):
VERIFY_SUSPECT(timeout=1500;down_thread=false;up_thread=false):
pbcast.NAKACK(down_thread=true;up_thread=true;gc_lag=100;retransmit_timeout=3000):
pbcast.GMS(join_timeout=5000;join_retry_timeout=2000;shun=false;print_local_addr=false;down_thread=true;up_thread=true)"
propertySeparator="::"
/>
cacheManagerPeerProviderFactory ehcache 缓存监视器 .
connect=TCP 监视模式 :TCP 模式 ( 还有 UDP 模式 ).
start_port 指定监听起始端口 .
TCPPING 监听端口寻找广播方式 ( 还有一种 :TCPGOSSIP) 寻找端口进行监听 , 从 start_port 开始递增 port_range 寻找可用的端口 .
initial_hosts 指定 ehcache 的所在主机 IP( 如果有多台主机的话 initial_hosts=192.168.1.1[7800],192.168.1.2[7800]).
port_range 递增值 .
timeout 没找到说明 , 猜测是寻找下一个有效端口前的停留时间 .
num_initial_members 初始成员 , 执行缓存同步的项目数
up_thread,down_thread 每个通信协议都会产生两个线程 (up_thread,down_thread), 用来控制队列的挂起和运行 , 可以通过设置 up_thread=false;down_thread=false 来使这两个线程失效
VERIFY_SUSPECT 校验模块 ( 问题出现时检验是服务死掉了 , 还是通信接口失效了 )
gc_lag 垃圾回收间隔
retransmit_timeout 重新广播前等待的时间
pbcast.NAKACK 确保消息正常广播 , 如果广播失败 , 接收者将重新请求 , 同时保证消息的先进先出原则
pbcast.GMS 调度器 , 实时的广播 , 告知成员的变动情况 , 新增或者去除 .
join_timeout 加入时间限时
join_retry_timeout 重试加入限时
shun 自动尝试加入 ( 新版本已被去除 , 不赞成使用 )
print_local_addr 打印出当前广播的地址
==============================================================================
<cacheEventListenerFactory
class="net.sf.ehcache.distribution.jgroups.JGroupsCacheReplicatorFactory"
properties="replicateAsynchronously=true, replicatePuts=true,
replicateUpdates=true, replicateUpdatesViaCopy=false,
replicateRemovals=true" />
cacheEventListenerFactory 注册相应的的缓存监听类 , 用于处理缓存事件 .
replicateAsynchronously true|false 复制操作是异步 (ture), 还是同步 (false) 默认值为 true.
replicatePuts true|false 当新对象被放入缓存 , 集群内其他缓存也放入 , 默认为 true.
replicateUpdates true|false 新对象覆盖已经存在具有相同 key 的对象是否被复制 , 默认值为 true.
replicateUpdatesViaCopy true|false 直接将更新之后的对象复制到集群中的其他缓存 (true); 不复制对象 , 只想集群众的其他
缓存发布一个对象更新的消息 (false), 默认为 true.
replicateRemovals true|false 对象被移除 , 是否复制状态到集群中其他缓存 , 默认 true.
==============================================================================
<defaultCache maxElementsInMemory="500000" eternal="false"
timeToIdleSeconds="1800" timeToLiveSeconds="1800"
overflowToDisk="true" diskPersistent="true">
<cacheEventListenerFactory
class="net.sf.ehcache.distribution.jgroups.JGroupsCacheReplicatorFactory"
properties="replicateAsynchronously=true, replicatePuts=true,
replicateUpdates=true, replicateUpdatesViaCopy=false,
replicateRemovals=true" />
</defaultCache>
<defaultCache maxElementsInMemory="10000" eternal="false"
timeToIdleSeconds="120" timeToLiveSeconds="120" overflowToDisk="true"
diskSpoolBufferSizeMB="30" maxElementsOnDisk="10000000"
diskPersistent="false" diskExpiryThreadIntervalSeconds="120"
memoryStoreEvictionPolicy="LRU">
<cacheEventListenerFactory
class="net.sf.ehcache.distribution.jgroups.JGroupsCacheReplicatorFactory"
properties="replicateAsynchronously=true, replicatePuts=true,
replicateUpdates=true, replicateUpdatesViaCopy=false,
replicateRemovals=true" />
</defaultCache>
defaultCache 默认缓存 , 有些没有被配置的缓存对象将使用默认缓存
maxElementsInMemory 内存中最大缓存对象数 . 当超过最大对象数的时候 ,ehcache 会按指定的策略去清理内存
eternal 缓存对象是否永久有效 , 一但设置了 ,timeout 将不起作用 .
timeToIdleSeconds 设置 Element 在失效前的允许闲置时间 . 仅当 element 不是永久有效时使用 , 可选属性 , 默认值是 0, 也就是可闲置时间无穷大 .
timeToLiveSeconds timeToLiveSeconds :设置 Element 在失效前允许存活时间 . 最大时间介于创建时间和失效时间之间 . 仅当 element 不是永久有效时使用 , 默认是 0., 也就是 element 存活时间无穷大 .
overflowToDisk 配置此属性 , 当内存中 Element 数量达到 maxElementsInMemory 时 ,Ehcache 将会 Element 写到磁盘中 .
diskSpoolBufferSizeMB 这个参数设置 DiskStore( 磁盘缓存 ) 的缓存区大小 . 默认是 30MB. 每个 Cache 都应该有自己的一个缓冲区 .
maxElementsOnDisk 磁盘中最大缓存对象数 , 若是 0 表示无穷大 .
diskPersistent 是否在重启服务的时候清楚磁盘上的缓存数据 .true 不清除 .
diskExpiryThreadIntervalSeconds 磁盘失效线程运行时间间隔 .
memoryStoreEvictionPolicy memoryStoreEvictionPolicy :当达到 maxElementsInMemory 限制时 ,Ehcache 将会根据指定的策略去清理内存 . 默认策略是 LRU( 最近最少使用 ). 你可以设置为 FIFO( 先进先出 ) 或是 LFU( 较少使用 ).
注 : 普通 cache 同 defaultCache 的属性一样 , 可以根据自己的实际需求去配置