Post Thumbnail

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

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

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

Похожее

Post Thumbnail

KV на S3

Статья разбирает, как построить key-value базу данных, у которой основным слоем ...

Post Thumbnail

Soppo

Пятничный язык программирования! Я про него уже писал, но он продолжает развиват...

Post Thumbnail

Typescript Defer

Автор экспериментировал с добавлением оператора defer из Go в компилятор TypeScr...