Автор описывает серверless-конвейер телеметрии на Cloudflare Workers, Queues, Workflows и R2. Его задача — превращать непрерывный поток событий в отдельные почасовые пакеты, при этом не смешивая приём новых данных с чтением уже завершённого интервала. Для этого используются две очереди по принципу двойной буферизации: одна в текущий час принимает события, другая остаётся неактивной и доступна для обработки.
Worker-продюсер извлекает час из метки времени каждого события в UTC и проверяет его чётность. События чётных часов отправляются в EVEN_QUEUE, нечётных — в ODD_QUEUE. Таким образом выбор очереди не требует отдельного изменяемого состояния или переключателя: он целиком вычисляется из времени самого события. UTC выбрано, чтобы расписание не зависело от переходов на летнее и зимнее время.
Обработчик запускается через Workflows каждый час в минуту 30. Он вычитает час из текущего времени и по чётности получившегося UTC-часа выбирает идентификатор очереди, которая использовалась в завершившемся интервале. К этому моменту продюсер уже направляет новые события в другую очередь, поэтому прежнюю можно безопасно освобождать. Запуск в середине следующего часа также оставляет запас на обработку сообщений предыдущего интервала.
Собранный пакет сжимается в gzip и записывается в R2 под именем dataset.json.gz. Путь включает год, месяц, день и час завершившего интервала, все компоненты также вычисляются в UTC. В метаданных объекта указываются application/json и gzip. Ошибка записи логируется с путём к файлу.
В результате получается разбиённый по часам архив JSON, пригодный для последующей аналитики. Главная практическая идея схемы — использовать простую модульную арифметику дважды: для маршрутизации входящего события и для выбора очереди при чтении. Автор представляет подход как способ получить серверless-хранилище телеметрии с низкими расходами на сервисы Cloudflare; конкретные показатели стоимости и производительности в материале не приводятся.