Springboot + бесконечный режим аннулирования: Как можно использовать с общим кэшем? - PullRequest
2 голосов
/ 13 марта 2019

У меня есть проект springboot, который использовал infinispan для запуска режима аннулирования в кластере для кэша.

Задание касается бесконечности.На самом деле, я прочитал официальный документ: "In invalidation, the caches on different nodes do not actually share any data" и теперь я в этой ситуации.

Я использую метод a при условии: Cache.putForExternalRead(key, value), и этот метод может решить проблему, заключающуюся в том, что когда я помещаю данные в кэш узла A, узел B делает их недействительными, но я не могу использоватьаннотации springboot, такие как @ Cacheable.

Я также прочитал «Режим недействительности можно использовать с хранилищем общего кэша».из документа, но я не знаю, как это сделать, и я надеюсь, что вы можете оказать некоторую помощь.

Цель, которую я надеюсь достичь, состоит в том, чтобы в режиме аннулирования я поместил данные в кэш узла A, Узел B примет копию данных от A. Могу ли я сделать это с режимом аннулирования?

Я пытаюсь использовать режим аннулирования с открытием CLusterLoader, но существует риск получения старого значения, когда узел получает данные из другогоузлы.

Сейчас я использую реплицируемый режим.Однако "replication practically only performs well in small clusters(under 10 nodes)" и "Asynchronous replication is not recommended". Так что я просто могу использовать синхронную репликацию.

Какая производительность будет лучше для аннулирования и синхронной репликации?

С нетерпением ждем вашей помощи.Спасибо

1 Ответ

2 голосов
/ 13 марта 2019

Spring-аннотации не будут полностью поддерживать режим INVALIDATION, если вы не используете ClusterLoader.Под капотом аннотации используют put, мы могли бы рассмотреть возможность добавления функции для поддержки поведения putForExternalRead в будущем, но это будет не очень скоро.Аннотации хорошо работают в режимах LOCAL, REPL и DIST.

ConfigurationBuilder b = new ConfigurationBuilder();
b.persistence()
    .addClusterLoader()
    .remoteCallTimeout(500);

Если вы боитесь получить устаревшие значения и недостаточно производительны с реплицированным кэшем, вы можете рассмотреть возможность использования распределенного кэша.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...