たとえば、ファイル ストア (jackrabbit バックエンド) として機能するサーバーがあります。このデータは、起動時にメモリ内 JCS キャッシュにプッシュされます。これはすべてうまくいくようです。
ただし、ソフトウェアはマルチノードになる可能性があるため、JCS でデータを他のノードにレプリケートする必要があります。これをテストするために、次の構成ファイルを使用しました (ノードごとにポートが反転されています)。
# DEFAULT CACHE REGION
jcs.default=LTCP
jcs.default.cacheattributes=org.apache.commons.jcs.engine.CompositeCacheAttributes
jcs.default.cacheattributes.MaxObjects=1000
jcs.default.cacheattributes.MemoryCacheName=org.apache.commons.jcs.engine.memory.lru.LRUMemoryCache
jcs.auxiliary.LTCP=org.apache.commons.jcs.auxiliary.lateral.socket.tcp.LateralTCPCacheFactory
jcs.auxiliary.LTCP.attributes=org.apache.commons.jcs.auxiliary.lateral.socket.tcp.TCPLateralCacheAttributes
jcs.auxiliary.LTCP.attributes.TcpServers=localhost:1987
jcs.auxiliary.LTCP.attributes.TcpListenerPort=1986
jcs.auxiliary.LTCP.attributes.AllowGet=true
ノード A に 100 個のファイルをロードすると (そして 10 秒ごとに 1 でロードし続けると)、ノード B にプッシュされ、更新され続けます。
ただし、ノード B をプルダウンしてノード B を再起動すると、新しく作成されたファイルが読み込まれます。
開始時に一貫性チェックを行うにはどうすればよいので、ノード A がノード B を再検出すると (そうであるように思われます)、再同期して自己を元に戻します。つまり、100 + X をノード B に再度プッシュしますか?
ディスクキャッシュは効果的にJackRabbitバックエンドになるため、メモリキャッシュでのみ使用したい(遅いので、メモリキャッシュが必要なだけです)
ありがとう