H3 Resolution spec
Geo grid
Кейс
Агрегация плотности/присутствия, API, масштабирование.
150K
Событий/мин
180ms
p95 латентность
Клиенту требовалось визуализировать паттерны пешеходного трафика по сотням локаций в реальном времени. Существующие решения не справлялись с объёмом данных и не обеспечивали нужную гранулярность.
Построили streaming-пайплайн с гео-разрешением на нескольких уровнях зума. Предагрегировали данные во временные бакеты. Разделили горячее (недавнее) и холодное (историческое) хранилище. Реализовали многоуровневое кеширование с Redis.
Документы и результаты проекта
H3 Resolution spec
Geo grid
API OpenAPI spec
REST v1
Доки по кешу
Redis + ClickHouse
6-фазный чеклист перед релизом
Уверенно обрабатывает 150K событий/минуту. 95-й перцентиль латентности запросов: 180мс. API обслуживает 50+ сторонних интеграций. Снижение затрат на инфраструктуру на 60% vs предыдущего решения.
H3 гексагональная сетка для консистентной агрегации на всех уровнях зума. Предвычисление на нескольких разрешениях для избежания рантайм-вычислений.
Последние 24 ч в Redis для мгновенного доступа. 30 дней в ClickHouse для быстрой аналитики. Старше: сжатое в S3, доступно через Athena. Тиринг автоматический: фоновый воркер перемещает данные по возрасту, API‑слой маршрутизирует запросы в нужное хранилище прозрачно — клиент видит один унифицированный API независимо от того, где лежат данные.
Тайлы хитмапы должны обновляться в течение 2 секунд после события, но наивный пересчёт на каждое событие рухнет под нагрузкой. Реализовали двухстадийный пайплайн: (1) входящие события батчатся в Redis Streams (окно 50 мс), затем (2) Lua‑скрипт атомарно инкрементирует предвычисленные счётчики H3‑ячеек на нескольких разрешениях одновременно. Фронтенд получает дельты тайлов (не полные снапшоты) через Server‑Sent Events, снижая трафик на 94% по сравнению с полным поллингом. При 50K событий/сек задержка тайлов остаётся менее 1.8 секунд, загрузка CPU — ниже 40% на одном 4‑ядерном инстансе.
Похожий проект? Получите оценку или запишитесь на звонок.
20 минут — обсудим вашу задачу, дадим честную оценку. Без обязательств.