Вот наш вариантом использования:Распределенного использование Кэширования случая с Hazelcast
У нас есть 4-8 узлов, которые реализуют распределенный кэш hazelcast Каждых узлы могут получить несколько сообщений через JMS, которые имеют один и тот же ключ транзакции, мы добавим все сообщения в кеше с парой ключевого объекта, где объект является списком элементов, подлежащих кэшированию.
Агрегация выполняется через apache-camel, где у нас есть агрегатор, который работает на 300 МИЛЛИЗЕЦ. . После 300 МИЛЛИЗЕЦ мы закрываем агрегирования и выселить все элементы из кеша, соответствующие ключу транзакции, и программно их заполнить. Роль Hazelcast является только для сбора сообщений в карте кэша и сохранить все узлы синхронизированы где-так как все узлы знают, какие элементы находятся в кэше Проблемы сценарии:
- узел 1 добавляет item1 в кэше для транзакции -key = tx1 в 17: 01: 01: 100 - и мы предполагаем, что hazelcast передает эту информацию другим узлам, так что все узлы получают копию кэшированного элемента.
- Узел 2 добавляет элемент item2 в кэш для транзакционной клавиши = tx1 в 17: 01: 01: 105
- Узел 3 добавляет элемент 3 в кэш для транзакционной клавиши = tx1 в 17: 01: 01: 350 Теперь предположим, что на 17: 01: 01: 400 мы стараемся, чтобы закрыть окно агрегации и программно выселить всех элементов из кэша с помощью транзакции ключ = TX1
проблема заключается в том, что node1, node2 знать о item1 и item2, поскольку они успели синхронизировать свои элементы кэша. НО узел3 добавил элемент3 настолько поздно, что node1 и node2 не знают о item3 в 17: 01: 01: 400. Предположим, что мы вытаскиваем выселение в 17: 01: 01: 400 из узла1, который не знает о item3, и он даст нам объект только с двумя элементами. Затем node1 будет транслировать всем, чтобы выселить все элементы кэша для транзакций, ключ = TX1 в ответ на что все узлы будут очищать свой кэш для транзакции ключа = TX1 Это приводит к потерянному пункту (ст.3)
признателен за любую помощь.
Я попытался ответить на ваш вопрос ниже. Если вам нужна дополнительная помощь, добавьте более релевантные детали к вашему вопросу. – Dinesh