Синхронизация распределенного кэша на нескольких экземплярах сервиса с использованием Guava Cache - PullRequest
0 голосов
/ 21 апреля 2020

Я использую Guava Cache в своих сервисах для кэширования базы данных, и я использую вызовы REST для аннулирования / обновления sh содержимого кэша. Моя установка содержит развертывание 10 распределенных экземпляров моего service.

Каковы рекомендации по обеспечению синхронизации между кэшами в нескольких экземплярах? В идеале, если я отправлю кеш update REST-вызов 1 экземпляру, я бы хотел, чтобы он вызывал тот же самый вызов на оставшихся 9-ти экземплярах.

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

Ответы [ 2 ]

0 голосов
/ 22 апреля 2020

Guava Cache не имеет ничего общего с распределенными приложениями, по определению он находится в памяти для одной JVM.

Если вам нужно распределенный кеш, подумайте:

  1. Использование других инструменты (например, Hazelcast или Apache Ignite .
  2. Использовать Redis - он сохранит одну копию данных в службе Redis, но запрос к ней очень быстрый, хотя и не так быстрый как вызов в памяти. Однако если вы используете кеширование, есть вероятность, что данные обновляются редко, но часто запрашиваются, поэтому, возможно, вы можете использовать redis в сочетании с некоторой картой в памяти + отправить сообщение всем экземплярам (pub-sub) после обновления кеша в одном экземпляре. Даже в Redis есть sub pub, который будет работать для такого рода задач, или вы можете использовать системы обмена сообщениями, такие как RabbitMq, ActiveMQ и т. д. c, если вы уже иметь их.
  3. Использовать базу данных + обмен сообщениями - аналогично «2», однако единственная копия данных будет храниться в базе данных.
0 голосов
/ 21 апреля 2020

Если вы не хотите использовать системы распределенного кэша, такие как Redis , то на вашем сервисном уровне есть еще одна конечная точка, которая отправляет / получает вызовы REST от других экземпляров сервиса (по со значением кэша плюс метаданные кэша), как только событие отмены кэша (выселение) или событие TTL refre sh обновит ваш слой кэша Guava в памяти.

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