Проверяет понимание границ применения разных уровней кэширования.
Локальный кэш (in-process) подходит для часто читаемых данных в пределах одного экземпляра приложения и минимальных задержек. Он не затрагивает сетевые вызовы, но не разделяется между инстансами. Распределённый кэш (Redis, Memcached) нужен, когда несколько приложений или контейнеров должны иметь единое кэш-пространство, и требуется согласованность и масштабируемость.
Локальный кэш:
Располагается внутри JVM/процесса.
Мгновенный доступ, минимум накладных расходов.
Не подходит для горизонтально масштабируемых кластеров.
Распределённый кэш:
Общая точка хранения, доступная всем экземплярам.
Позволяет разделять состояние между сервисами.
Сетевые задержки, необходимость управления отказами кэша.
Критерии выбора:
Число инстансов: один — локальный, много — распределённый.
Объём данных: локальный ограничен памятью JVM.
Требуется консистентность: если важно, чтобы все узлы видели одни и те же данные.
Комбинирование:
Гибридная схема: локальный L1-кеш + Redis как L2-кеш.
Быстрый доступ в L1, глобальное обновление через L2+инвалидацию L1.