前阵子用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的属性一样,可以根据自己的实际需求去配置
参考http://ehcache.org/documentation/configuration.html(最下方)