ehcache集群缓存配置说明

本文详细解析了 Ehcache 集群配置的各项参数及其作用,包括缓存监听器配置、集群通信配置等,帮助理解如何高效地设置和使用 Ehcache 集群。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

前阵子用 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 的属性一样 , 可以根据自己的实际需求去配置

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值