例如,我们有充当文件存储的服务器(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
这似乎最初是可行的,如果我用 100 个文件加载节点 A(并且每 10 秒保持加载 1 个文件),它就会被推送到节点 B,并不断更新。
但是,如果我拉下节点 B,然后重新启动节点 B,它将拉入新创建的文件。
我怎样才能让它在开始时进行一致性检查,所以当节点 A 重新找到节点 B(这似乎是)时,它会重新同步并将其自身重新排序出来。即再次将 100 + X 推到节点 B?
我只想在内存缓存中使用,因为磁盘缓存将是 JackRabbit 后端(我知道速度较慢,因此我们只需要内存缓存)
谢谢