Пакет sync/singleflight в Go: устранение дублирования идентичных запросов

Пару лет назад в условиях быстрого роста проекта столкнулся с чрезмерной нагрузкой на базу данных при холодном старте, а порой и при устаревании кэша. Дебаг выявил, что из большого количества запросов несколько вызывались на порядок чаще других. Настолько часто, что за время построения кэша после первого пришедшего запроса успевало прилететь еще множество запросов и все они параллельно нещадно грузили базу данных.

В тот раз задачу в спешке решил не самым изящным образом поэтому когда намедни столкнулся с похожим кейсом уже на Go-стеке, первым делом отправился в Google во избежание прежних костылей.
читать далее →
Раздел Go
(Codeblog)