Post Thumbnail

Статья показывает, как в Go аккуратно батчить данные, поступающие в реальном времени, на примере обновления поля last_active_at для каждого запроса пользователя - вместо тысяч одиночных UPDATE группировать их в один UPDATE ... WHERE id IN (...).

Суть подхода в том, что публичная функция UpdateUserTimestamp отправляет ID в общий канал-очередь и блокируется, ожидая ответ от воркера через персональный буферизованный канал ReplyTo. Воркер накапливает ID в батчи заданного размера с таймаутом, чтобы в тихие периоды не копить запросы слишком долго, и обрабатывает их с управляемой конкуренцией через авторскую библиотеку rill

У автора, кажется, получилось скрыть сложность за простотой вызова

Похожее

Post Thumbnail

GopherCon UK 2026

Видосы с GopherCon UK 2026 подоспели. Много всего интересного. Девид Чейни, Билл...