В настоящее время мы ищем самое подходящее решение для доступа к критическим данным в распределенной системе, и мы рассматриваем вопрос о том, следует ли использовать в кэшировании памяти по сравнению с централизованным кешем.Кэш-память в оперативной памяти VS. централизованный кеш в распределенной системе
Некоторая информация о данных, которые мы хотим сохранить/доступ:
- Очень маленький размер данных
- данных очень холодно; это означает, что он практически не меняется и изменяется только тогда, когда человек меняет что-то в нашей бэк-офисной системе.
- Должен быть актуальным при изменении (задержка в 100 мс в порядке)
- Очень критический путь для нашего приложения, требующий очень высокой SLA (как в надежности и времени отклика (не более 20 мс доступа))
- Данные считываются из часто (до тысячи раз в секунду)
, как мы видим, это следующим образом -
В кеше памяти
Плюсы:
- Quicker чем сети доступа + сериализации
- Высокая надежность с точки зрения распределения (если один экземпляр умирает, данные по-прежнему существует в других случаях)
Cons :
- Гораздо более сложный код и поддержка
- Требуется извещающие экземпляров раз изменение происходит и нужно обновлять каждый экземпляр отдельно + нужно загрузить данные на начало каждого сервера
- Добавляет высокий риск несогласованности данных (один экземпляр, имеющих разные или устаревшие данные, чем другие)
Централизованный кэш
ради беседы, мы рассматривали с помощью Redis.
Плюсы:
- Гораздо проще поддерживать
- Очень надежный, мы имеем большой опыт работы с Redis в распределенной системе
- только одно место, чтобы обновить
- Гарантирует последовательность данных
Против:
- Одиночная точка отказа (для нас это очень важно); несмотря на то, если мы пойдем с этим решением, мы будем развернуть кластер
- Что произойдет, если кэш очищается по какой-то причине
После прочтения дополнительных статей в Интернете и рассмотрения плюсов и минусов мы решили, что централизованный кеш - лучшее решение для нас. – Ron