Cache avalanche — массовое истечение ключей или недоступность кеша, из-за чего нагрузка одновременно переходит в основную БД. Jitter разносит сроки истечения во времени.
Что такое Cache Avalanche (лавина кэша), когда у тысяч ключей одновременно истекает TTL, и как это предотвращается с помощью рандомизации (jitter)?
Cache avalanche — массовое истечение ключей или недоступность кеша, из-за чего нагрузка одновременно переходит в основную БД. Jitter разносит сроки истечения во времени.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Cache avalanche — массовое истечение ключей или недоступность кеша, из-за чего нагрузка одновременно переходит в основную БД. Jitter разносит сроки истечения во времени.
Вместо одинакового TTL назначайте, например, base_ttl + random.uniform(0, spread), если более долгий срок допустим. При жёстком пределе свежести выбирайте разброс только внутри разрешённого окна.
Jitter снижает синхронность, но не лечит полный отказ кеша. Дополнительно применяют ограничение конкурентных восстановлений, singleflight на горячий ключ, прогрев и допустимую выдачу stale-данных. Отличайте лавину многих ключей от stampede одного популярного ключа. Следите за miss rate и нагрузкой на источник данных.