Возникнет cache stampede: множество одновременных промахов отправит одинаковые запросы в базу. Нужны объединение обновлений, выдача допустимо устаревшего значения и ограничение нагрузки на источник.
Мы кэшируем данные популярного сериала. В момент выхода новой серии миллион пользователей одновременно запрашивают эти данные, а TTL кэша истекает. Что произойдёт с базой данных и как защитить систему от этой проблемы?
Возникнет cache stampede: множество одновременных промахов отправит одинаковые запросы в базу. Нужны объединение обновлений, выдача допустимо устаревшего значения и ограничение нагрузки на источник.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Возникнет cache stampede: множество одновременных промахов отправит одинаковые запросы в базу. Нужны объединение обновлений, выдача допустимо устаревшего значения и ограничение нагрузки на источник.
Для одного горячего ключа выбирают единственного обновляющего исполнителя, а остальные ждут ограниченное время или получают старые данные. Заранее прогрейте ожидаемо популярный объект, учитывая момент появления новой версии. Разброс TTL помогает при массовом истечении разных ключей, но сам не устраняет миллион запросов к одному. Нужны также лимиты, таймауты и безопасный отказ, если обновитель или база недоступны.