ehcache集群缓存配置说明

    技术2022-05-19  22

     

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

     


    最新回复(0)