Я использую EhCache 2.10.2. Синхронная репликация (replicateAsynchronously = false) между двумя серверами (S1 и S2).Репликация кеша
У меня следующая ситуация:
- Первый запрос HTTP будет S1
- S1 не может найти объект в кэше и загружает его из БД с состояния «А» и помещает в кэш
- S1 изменения состояния объекта в «B», сохраняет в БД и помещает в кэш
- S1 посылает ответ об успешном
- Следующий запрос собирается S2
- S2 находит obect в са che с состоянием «A»
- S2 отправляет ответ об ошибке, поскольку объект должен иметь состояние «B» во втором запросе.
Когда сервер ставит объект в кеш, поток блокируется при операции ввода только для отправки сериализованного объекта на другой сервер и не ждет, пока другой сервер десериализует и кладет элемент в кеш. Итак, в точке 6 может быть состояние «A» или «B», если нам повезет.
Возможно ли настроить EhCache для блокировки операций до тех пор, пока изменения не будут реплицированы на всех узлах?
Может быть, мне нужно заменить EhCache другой реализацией кэша или изменить все?