Выбор ответа Middle Кеш и очереди обновлено

Cache stampede

Вопрос

Ключ с главной страницей истёк, и 2000 одновременных запросов пошли считать её в базу. Как называется проблема и что помогает?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: Cache stampede; помогают блокировка на пересчёт и раннее обновление. Когда популярный ключ истекает, все запросы одновременно получают промах и бьют в базу.

Варианты ответа

  1. Cache miss; помогает увеличить память Redis и TTL
  2. Cache stampede; помогают блокировка на пересчёт и раннее обновлениеправильный ответ
  3. Thundering herd в TCP; помогает keep-alive к базе
  4. Hot partition; помогает шардирование базы по ключу

Разбор

Когда популярный ключ истекает, все запросы одновременно получают промах и бьют в базу. Решения: пусть пересчитывает один (блокировка SET NX), остальные ждут или получают старое значение; одинаковые запросы внутри процесса объединяются в один промис; ключ обновляется заранее фоном. Плюс jitter к TTL.

  • Промах один, проблема в их одновременности, а память тут ни при чём.
  • keep-alive не уменьшает число запросов к базе.
  • Шардирование базы не решает повторный расчёт одного и того же.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.