2016-03-06 87 views
1

對於3個不同的tomcat實例,我有以下ehcache配置。在Tomcat集羣中使用ehcache進行高速緩存重新編碼

我的假設是,在每個ehcache中,我們應該將所有其他節點定義爲提供者,並將此當前節點定義爲偵聽器。

我們應該在每個ehcache.xml中定義所有的緩存嗎?如果是,我們是否也應該將這些名稱添加到RMI地址? 我定義了這樣的ehcaches。兩個緩存的複製工作正常,但對於其他兩個緩存則不起作用(activityCache和classificationCache)。當然,它應該取決於他們的實現,但是在這個時候,我想確保ehcache配置是正確的。

<ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xsi:noNamespaceSchemaLocation="ehcache.xsd"> 

<cache name="activityCache" 
      maxElementsInMemory="30" 
      maxElementsOnDisk="100000" 
      eternal="true" 
      overflowToDisk="true" 
      diskPersistent="true" 
      diskSpoolBufferSizeMB="20" 
      timeToIdleSeconds="50" 
      timeToLiveSeconds="5" 
      memoryStoreEvictionPolicy="LFU"> 

      <bootstrapCacheLoaderFactory class = "net.sf.ehcache.distribution.RMIBootstrapCacheLoaderFactory" properties = "bootstrapAsynchronously=false, maximumChunkSizeBytes=5000000"/> 

      <cacheEventListenerFactory class = "net.sf.ehcache.distribution.RMICacheReplicatorFactory" properties="replicateAsynchronously=true, asynchronousReplicationIntervalMillis=100"/> 

      </cache> 

     <cache name="featureCache" 
      maxElementsInMemory="30" 
      maxElementsOnDisk="100000" 
      eternal="true" 
      overflowToDisk="true" 
      diskPersistent="true" 
      diskSpoolBufferSizeMB="20" 
      timeToIdleSeconds="50" 
      timeToLiveSeconds="5" 
      memoryStoreEvictionPolicy="LFU">    

      <bootstrapCacheLoaderFactory class = "net.sf.ehcache.distribution.RMIBootstrapCacheLoaderFactory" properties = "bootstrapAsynchronously=false, maximumChunkSizeBytes=5000000"/> 

      <cacheEventListenerFactory class = "net.sf.ehcache.distribution.RMICacheReplicatorFactory" properties="replicateAsynchronously=true, asynchronousReplicationIntervalMillis=100"/> 

      </cache> 

     <cache name="classificationCache" 
      maxElementsInMemory="30" 
      maxElementsOnDisk="100000" 
      eternal="true" 
      overflowToDisk="true" 
      diskPersistent="true" 
      diskSpoolBufferSizeMB="20" 
      timeToIdleSeconds="50" 
      timeToLiveSeconds="5" 
      memoryStoreEvictionPolicy="LFU">  

      <bootstrapCacheLoaderFactory class = "net.sf.ehcache.distribution.RMIBootstrapCacheLoaderFactory" properties = "bootstrapAsynchronously=false, maximumChunkSizeBytes=5000000"/> 

      <cacheEventListenerFactory class = "net.sf.ehcache.distribution.RMICacheReplicatorFactory" properties="replicateAsynchronously=true, asynchronousReplicationIntervalMillis=100"/> 

      </cache> 

    <cache name="userGroupCache" 
      maxElementsInMemory="30" 
      maxElementsOnDisk="100000" 
      eternal="true" 
      overflowToDisk="true" 
      diskPersistent="true" 
      diskSpoolBufferSizeMB="20" 
      timeToIdleSeconds="50" 
      timeToLiveSeconds="5" 
      memoryStoreEvictionPolicy="LFU"> 

      <bootstrapCacheLoaderFactory class = "net.sf.ehcache.distribution.RMIBootstrapCacheLoaderFactory" properties = "bootstrapAsynchronously=false, maximumChunkSizeBytes=5000000"/> 

      <cacheEventListenerFactory class = "net.sf.ehcache.distribution.RMICacheReplicatorFactory" properties="replicateAsynchronously=true, asynchronousReplicationIntervalMillis=100"/> 

      </cache>     

<cacheManagerPeerProviderFactory class = "net.sf.ehcache.distribution.RMICacheManagerPeerProviderFactory" properties = "peerDiscovery=manual, rmiUrls=//localhost:40002/activityCache|//localhost:40002/userGroupCache|//localhost:40002/featureCache|//localhost:40002/classificationCache//localhost:40003/activityCache|//localhost:40003/userGroupCache|//localhost:40003/featureCache|//localhost:40003/classificationCache"/> 

<cacheManagerPeerListenerFactory class = "net.sf.ehcache.distribution.RMICacheManagerPeerListenerFactory" properties = "hostName=localhost, port=40001, socketTimeoutMillis=2000"/> 

</ehcache> 

這裏同時緩存和cahchSevices的定義:

 <bean id="featureCache" parent="abstractOptionalCache"> 
     <property name="maxElementsInMemory" value="${cache.feature.maxMemoryElements}"/> 
     <property name="maxElementsOnDisk" value="${cache.feature.maxDiskElements}"/> 
     <property name="overflowToDisk" value="${cache.feature.useDisk}"/> 
     </bean> 

     <bean id="featureCacheService" parent="abstractService" class="com.service.business.cache.impl.ehcache.EHcacheFeatureCacheService"> 
     <property name="cache" ref="featureCache"/> 
     <property name="enabled" value="${cache.feature.enable}"/> 
     </bean> 

     <bean id="activityCache" parent="abstractMandatoryCache"> 
     <property name="cacheManager" ref="cacheManager"/> 
     <property name="maxElementsInMemory" value="${cache.activity.maxMemoryElements}"/> 
     </bean> 

     <bean id="activityCacheService" parent="abstractService" class="com.service.business.cache.impl.ehcache.EHcacheActivityCacheService"> 
     <property name="cache" ref="activityCache"/> 
     </bean> 

     <bean id="classificationCache" parent="abstractOptionalCache"> 
     <property name="cacheManager" ref="cacheManager"/> 
     <property name="maxElementsInMemory" value="${cache.classification.maxMemoryElements}"/> 
     <property name="maxElementsOnDisk" value="${cache.classification.maxDiskElements}"/> 
     <property name="overflowToDisk" value="${cache.classification.useDisk}"/> 
     </bean> 

     <bean id="classificationCacheService" parent="abstractService" class="com.service.business.cache.impl.ehcache.EHcacheClassificationCacheService"> 
     <property name="cache"  ref="classificationCache" /> 
     <property name="enabled" value="${cache.classification.enable}"/> 
     </bean> 

     <bean id="userGroupCache" parent="abstractOptionalCache"> 
    <property name="cacheManager" ref="cacheManager"/> 
    <property name="maxElementsInMemory" value="${cache.userGroup.maxMemoryElements}"/> 
    <property name="maxElementsOnDisk" value="${cache.userGroup.maxDiskElements}"/> 
    <property name="overflowToDisk" value="${cache.userGroup.useDisk}"/> 
    </bean> 

    <bean id="userGroupCacheService" parent="abstractService" class="com.service.business.cache.impl.ehcache.EHcacheUserGroupCacheService"> 
    <property name="cache"  ref="userGroupCache" /> 
    <property name="enabled" value="${cache.userGroup.enable}"/> 
    </bean> 

我將提供根據您的要求的更多信息。

預先感謝您。

回答

1

你做的所有權利,而只是在錯誤

rmiUrls=//localhost:40002/activityCache|//localhost:40002/userGroupCache|//localhost:40002/featureCache|//localhost:40002/classificationCache//localhost:40003/activityCache|//localhost:40003/userGroupCache|//localhost:40003/featureCache|//localhost:40003/classificationCache 

你錯過|分類和活動緩存

//localhost:40002/classificationCache//localhost:40003/activityCache 

這是這兩個緩存不工作的原因之間!