Выбор ответа Middle Кеш и очереди обновлено
Cache stampede
Вопрос
Ключ с главной страницей истёк, и 2000 одновременных запросов пошли считать её в базу. Как называется проблема и что помогает?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Cache stampede; помогают блокировка на пересчёт и раннее обновление. Когда популярный ключ истекает, все запросы одновременно получают промах и бьют в базу.
Варианты ответа
- Cache miss; помогает увеличить память Redis и TTL
- Cache stampede; помогают блокировка на пересчёт и раннее обновлениеправильный ответ
- Thundering herd в TCP; помогает keep-alive к базе
- Hot partition; помогает шардирование базы по ключу
Разбор
Когда популярный ключ истекает, все запросы одновременно получают промах и бьют в базу. Решения: пусть пересчитывает один (блокировка SET NX), остальные ждут или получают старое значение; одинаковые запросы внутри процесса объединяются в один промис; ключ обновляется заранее фоном. Плюс jitter к TTL.
- Промах один, проблема в их одновременности, а память тут ни при чём.
- keep-alive не уменьшает число запросов к базе.
- Шардирование базы не решает повторный расчёт одного и того же.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.