4

В настоящее время мы ищем самое подходящее решение для доступа к критическим данным в распределенной системе, и мы рассматриваем вопрос о том, следует ли использовать в кэшировании памяти по сравнению с централизованным кешем.Кэш-память в оперативной памяти VS. централизованный кеш в распределенной системе

Некоторая информация о данных, которые мы хотим сохранить/доступ:

  • Очень маленький размер данных
  • данных очень холодно; это означает, что он практически не меняется и изменяется только тогда, когда человек меняет что-то в нашей бэк-офисной системе.
  • Должен быть актуальным при изменении (задержка в 100 мс в порядке)
  • Очень критический путь для нашего приложения, требующий очень высокой SLA (как в надежности и времени отклика (не более 20 мс доступа))
  • Данные считываются из часто (до тысячи раз в секунду)

, как мы видим, это следующим образом -

В кеше памяти

Плюсы:

  • Quicker чем сети доступа + сериализации
  • Высокая надежность с точки зрения распределения (если один экземпляр умирает, данные по-прежнему существует в других случаях)

Cons :

  • Гораздо более сложный код и поддержка
  • Требуется извещающие экземпляров раз изменение происходит и нужно обновлять каждый экземпляр отдельно + нужно загрузить данные на начало каждого сервера
  • Добавляет высокий риск несогласованности данных (один экземпляр, имеющих разные или устаревшие данные, чем другие)

Централизованный кэш

ради беседы, мы рассматривали с помощью Redis.

Плюсы:

  • Гораздо проще поддерживать
  • Очень надежный, мы имеем большой опыт работы с Redis в распределенной системе
  • только одно место, чтобы обновить
  • Гарантирует последовательность
  • данных

Против:

  • Одиночная точка отказа (для нас это очень важно); несмотря на то, если мы пойдем с этим решением, мы будем развернуть кластер
  • Что произойдет, если кэш очищается по какой-то причине

ответ

4

я не нахожу никакой проблемы при переходе на централизованный кэш с помощью Redis.

  1. В любом случае у вас будет установка кластера, поэтому, если мастер не сработает, подчиненный займет позицию.
  2. Если по какой-то причине кеш покраснели, вам нужно создать кеш, в среднем запросы времени получат данные из основного источника (DB)
  3. Вы можете включить сохранение и загрузить данные, сохраненные на диске, и можете получить данные за считанные секунды (подключи и играй). Если вы считаете, что у вас будет несогласованность, следуйте приведенному ниже методу.

Даже если кэш недоступен, система должна работать (очевидно, с задержкой). Значение логики приложения должно проверять наличие кеша в redis, если его нет или система сама по себе недоступна, она должна получить значение от дБ, а затем заполнить его для повтора, а затем обратиться к клиенту.

Таким образом, даже если ваш redis master и slave выключены, приложение будет работать нормально, но с задержкой. А также ваш кеш будет обновлен.

Надеюсь, это поможет.

+0

После прочтения дополнительных статей в Интернете и рассмотрения плюсов и минусов мы решили, что централизованный кеш - лучшее решение для нас. – Ron

1

Redis - отличный вариант для централизованного кеширования. Это быстро и отлично. Мы используем его для хранения ТБ данных.