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

Используйте single-flight или блокировку по ключу: одно выполнение обновляет кеш, остальные ждут либо получают допустимое устаревшее значение. Повторно проверьте кеш после получения блокировки.

Короткий ответ

Что ответить на собеседовании

Используйте single-flight или блокировку по ключу: одно выполнение обновляет кеш, остальные ждут либо получают допустимое устаревшее значение. Повторно проверьте кеш после получения блокировки.

Подробный разбор

Ответ с пояснениями

Используйте single-flight или блокировку по ключу: одно выполнение обновляет кеш, остальные ждут либо получают допустимое устаревшее значение. Повторно проверьте кеш после получения блокировки.

Добавьте jitter к TTL, ограничение ожидания и безопасное освобождение lock владельцем. Между процессами локальный mutex не достаточен; распределённая блокировка требует lease и защиты от поздней записи. Stale-while-revalidate подходит лишь там, где устаревание допустимо. Не превращайте один глобальный lock в узкое место для всех ключей.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее