🟡 Средний · 2 очк. Кеширование
Что такое cache stampede (thundering herd) и как пакет singleflight помогает с этой проблемой?
A Много запросов при промахе кеша одновременно идут в БД; singleflight объединяет их в один вызов
B Кеш переполняется и падает; singleflight ограничивает размер очереди
C Записи в кеш конфликтуют; singleflight сериализует запись
D TTL истекает у многих ключей разом; singleflight продлевает TTL
Объяснение вопроса

Cache stampede: при истечении ключа много горутин одновременно получают промах и идут в БД.

singleflight (golang.org/x/sync/singleflight) группирует вызовы с одним ключом: выполняется одна функция загрузки, остальные ждут и получают тот же результат.

g := new(singleflight.Group)
v, err, _ := g.Do(key, func() (interface{}, error) {
    return loadFromDB(key)
})
🧠Квиз 🏆Лидеры 🎯Собесед. 📖Вопросы 📚База зн.