EhCacheクラスタ環境でのキャッシュシステムの使用

10593 ワード

EhCache分散キャッシュ/キャッシュ・クラスタEhCacheは、多くのソリューションを提供しています.ここでは、最も一般的で簡単なRMI方式の分散キャッシュ・ソリューションについて説明します.
Automatic Peer Discovery自動メンバー検出方式
        TCP               。                          。                  ,       。



           “  ”。       5                。             “  ”        。



                 cache                  。

1まずマルチキャストアドレスConfiguring the Peer Providerを構成する【自動メンバー発見server 1とserver 2の構成が同じであることに注意】
 
    <cacheManagerPeerProviderFactory

        class="net.sf.ehcache.distribution.RMICacheManagerPeerProviderFactory"

        properties="peerDiscovery=automatic, multicastGroupAddress=230.0.0.1,

        multicastGroupPort=4446, timeToLive=32"/>

 
 
2次に、CacheManagerPeerListenerを構成して、他のクラスタ・サーバからのメッセージを受信する
<cacheManagerPeerListenerFactory

        class="net.sf.ehcache.distribution.RMICacheManagerPeerListenerFactory"

        properties="hostName=192.168.1.253, port=40001,

        socketTimeoutMillis=2000"/>

1 hostName=192.168.1.253 IP

 
3キャッシュが必要なcacheにコンフィギュレーションCache Replicators起動クラスタを設定する
<cache name="MyCache"

        maxElementsInMemory="50"

        eternal="true"

    >

    <cacheEventListenerFactory

       class="net.sf.ehcache.distribution.RMICacheReplicatorFactory"/>

    </cache>

 
Manual Peer Discovery{#Manual Peer Discovery}手動メンバー発見
                 IP     。                。                       ,                          。                    ,  server2  server1, server1   server2。

クラスタに2台のサーバがあるとします.sampleCache 1とsampleCache 2を同期します.各サーバに必要な構成は、server 1の構成です.
<cacheManagerPeerProviderFactory

class="net.sf.ehcache.distribution.RMICacheManagerPeerProviderFactory"

properties="peerDiscovery=manual,

rmiUrls=//server2:40001/MyCache|//server2:40001/     name"/>

サーバ2の構成
<cacheManagerPeerProviderFactory

class="net.sf.ehcache.distribution.RMICacheManagerPeerProviderFactory"

properties="peerDiscovery=manual,

rmiUrls=//server1:40001/MyCache|//server1:40001/     name"/>

次に上の赤2,3の手順を配置すればいいです.
<cacheManagerPeerListenerFactory

        class="net.sf.ehcache.distribution.RMICacheManagerPeerListenerFactory"

        properties="hostName=192.168.1.253, port=40001,

        socketTimeoutMillis=2000"/>
 <cache name="MyCache"

        maxElementsInMemory="50"

        eternal="true"

    >

    <cacheEventListenerFactory

       class="net.sf.ehcache.distribution.RMICacheReplicatorFactory"/>

    </cache>
                          。



      rmiUrls=//server1:40001/MyCahce|//server1:40001/      "      



                            MyCache.

 
CacheManagerPeerListener上の手順2の構成説明
<cacheManagerPeerListenerFactory

class="net.sf.ehcache.distribution.RMICacheManagerPeerListenerFactory"

properties="hostName=localhost, port=40001,

socketTimeoutMillis=2000"/>
properties       :
hostname ( ) – 。 , 。 CacheManager hostname 。 hostName ,CacheManager 。 ,hostname InetAddress.getLocalHost().getHostAddress() 。 : localhost 127.0.0.1, 。 CacheManager , localhost 。 port – 。 socketTimeoutMillis ( ) – Socket 。 2000ms。 socket , 。 , 。

コンフィギュレーションCache Replicators上の構成3の説明
<cache name="sampleCache2"

  maxEntriesLocalHeap="10"

  eternal="false"

  timeToIdleSeconds="100"

  timeToLiveSeconds="100"

  overflowToDisk="false">

<cacheEventListenerFactory

class="net.sf.ehcache.distribution.RMICacheReplicatorFactory"

properties="replicateAsynchronously=true, replicatePuts=true, replicateUpdates=true,

replicateUpdatesViaCopy=false, replicateRemovals=true "/>

</cache>
class –   net.sf.ehcache.distribution.RMICacheReplicatorFactory



          :

replicatePuts=true | false –                         peers.    true。

replicateUpdates=true | false –                          。   true。

replicateRemovals= true | false –               。   true。

replicateAsynchronously=true | false –         (   true )     (   false )。   true。

replicatePutsViaCopy=true | false –               cache           true    ,   true。

replicateUpdatesViaCopy=true | false –             cache        (   true    ),   true。



     ehcache               ,                 ;             RMICacheReplicatorFactory     :
<cache name="sampleCache4"

      maxEntriesLocalHeap="10"

      eternal="true"

      overflowToDisk="false"

      memoryStoreEvictionPolicy="LFU">

   <cacheEventListenerFactory

       class="net.sf.ehcache.distribution.RMICacheReplicatorFactory"/>

</cache>

 
https://www.ibm.com/developerworks/cn/java/j-lo-ehcache/関連記事
http://www.cnblogs.com/hoojo/archive/2012/07/19/2599534.html関連記事
http://ehcache.org/documentation/replication/rmi-replicated-caching公式ドキュメント