awesome-everything EN
↑ Обратно к восхождению

Кеширование

Cache stampede: тест с выбором ответа

Суть Синтез всего юнита в формате выбора: форма всплеска, область действия lock против single-flight, XFetch, SWR, negative caching и metastable failure.
Высота — путь к senior
НольJuniorMiddleSenior
Ты на senior-высоте — в орбите
◷ 13 min

Шесть вопросов через весь юнит. Ни один из них не про определение — каждый отражает решение, которое вы принимаете прямо во время инцидента, когда БД горит, а вам нужно выбрать митигацию, область действия которой действительно совпадает с формой стада.

Цель

Убедитесь, что вы связываете форму всплеска stampede с правильной митигацией: что сворачивает стадо внутри процесса, что — стадо всего флота, что не требует координации, что убирает ожидание, и какой режим отказа не победить одним только слоем кеша.

Викторина

Главная страница закеширована с TTL=60 с и поглощает 5 000 RPS. Тот же эндпоинт без кеша тоже видит 5 000 RPS. Почему версия с кешем способна вызвать аварию, которой никогда не будет без кеша?

Викторина

Флот из 50 нод использует только in-process single-flight. На границе TTL приходят 100 000 одновременных промахов, равномерно распределённых. Сколько rebuild-запросов достигнет БД и почему?

Викторина

Нужно защитить два ключа: сверхгорячую главную, читаемую тысячи раз в секунду, и холодный персональный отчёт, читаемый раз в ~30 с с TTL=60 с. Какая митигация подходит какому ключу?

Викторина

Кеш на основе lock и кеш со stale-while-revalidate оба сводят нагрузку на БД на границе TTL к одному rebuild. В чём ключевая разница, которую чувствует пользователь?

Викторина

Сервис профилей кеширует лукапы на 5 минут. Атакующий шлёт 100 000 запросов/с по случайным несуществующим user ID. Защита позитивных ключей (lock + single-flight) ничего не делает. Почему и как чинить?

Викторина

Stampede длиной 10 секунд закончился четыре часа назад, а БД всё ещё прибита к 100% CPU с пустым кешем. Почему система не восстановится сама и что нужно для восстановления?

Итог

Сквозная линия юнита — это упражнение на сопоставление: форма всплеска stampede (полная скорость трафика, сконцентрированная в один момент истечения) определяет, какая митигация подходит. Single-flight бесплатно сворачивает стадо внутри процесса; distributed lock сворачивает стадо всего флота ценой round-trip; XFetch обновляет горячие ключи до истечения без координации; SWR отдаёт устаревшее и обновляет в фоне ради нулевого ожидания; negative caching останавливает усиление miss-storm; а как только stampede опрокидывает систему в metastable failure на ретраях, ни один слой кеша в одиночку её не вернёт — только внешний kill-сигнал.

Продолжить восхождение ↑Cache stampede: свободное воспроизведение
хоткеи развернуть
поиск
K
пред. пьеса
k
след. пьеса
j
тиры
t
это меню
?
sources3
expand
  1. 01
  2. 02
  3. 03

Trademarks belong to their respective owners. Editorial reference only.