JCS, восстановление с мертвого узла с использованием только кэширования памяти
Например, у нас есть сервер, который действует как файловое хранилище (бэк-энд джекбит). Эти данные помещаются при запуске в кэш 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 файлами (и продолжаю загружать по 1 каждые 10 секунд), он переносится на Узел Б и продолжает обновляться.
Однако, если я опущу Узел B, а затем перезапущу Узел B, он будет извлекать вновь созданные файлы.
Как я могу заставить его выполнить проверку согласованности при запуске, чтобы, когда Узел A повторно находит Узел B (который, по-видимому,), он повторно синхронизирует и сортирует себя обратно... Т.е. снова выдвигает 100 + X в Узел B?
Я хочу использовать только в кешах памяти, так как по сути дисковый кеш будет бэкэндом JackRabbit (медленнее, я знаю, поэтому нам просто нужен кеш в памяти)
Спасибо