
Реальный time series агрегатор: как обрабатывать 10 событий/сек на графе из 300k узлов
arhip1986 17 минут назад Реальный time series агрегатор: как обрабатывать 10 событий/сек на графе из 300k узлов 7 мин 542 .NET * C# * Высоконагруженные системы * Алгоритмы * Промышленное программирование * Туториал...
В сфере искусственного интеллекта произошло заметное событие. arhip1986 17 минут назад Реальный time series агрегатор: как обрабатывать 10 событий/сек на графе из 300k узлов 7 мин 542 . NET * C# * Высоконагруженные системы * Алгоритмы * Промышленное программирование * Туториал Представьте, что у вас есть многослойный пайплайн обработки данных. Слой 0 — сырые события: цена тика, действие пользователя, показание датчика.
Слой 1 — агрегаты по инструментам: дельта, гамма, скор. Слой 2 — агрегаты по секторам: риск на сектор, общая экспозиция. Слой 3 — портфельные метрики: VaR, ожидаемая прибыль.
Технические детали
Слой 4 — enterprise-лимиты и алерты. Ширина слоя — 5000 узлов. Количество слоёв — 60.
Общее число узлов — 300 000. Каждую секунду приходит 10 новых событий (изменений на входе). Наивный подход — пересчитать всё с нуля — будет перебирать все 300 000 узлов на каждое обновление.
При 10 обновлениях в секунду это 3 млн вычислений узлов в секунду. А если ширина слоя 100 000 и слоёв 100? Получаем 10 млн узлов на пересчёт.
Отраслевые последствия
Компьютер не справляется. Классические подходы и их ограниченияПодходПроблемаПолный пересчёт (recompute everything)Экспоненциальный рост времени при увеличении графаТриггеры в БДНе работают для многослойных in-memory графовStream-процессоры (Flink, Kafka Streams)Тяжёлые, не для in-memory иерархийКастомный кэш инвалидацииСложно реализовать корректно, легко ошибитьсяТребования к решениюИнкрементальный пересчёт: только затронутые узлы, а не все. Минимальные аллокации в горячем пути.
Точные индексы для быстрых запросов (Fenwick, гистограммы, суммы). Поддержка двух режимов обновления: SetValue (production) и Mutate (симуляции). Решение: PhiFlowPhiFlow — библиотека для .
0+, реализующая инкрементальные вычисления на слоистых графах фиксированной ширины. dotnet add package PhiFlow --version 0. 3Ключевые идеиInterval Cone-of-Influence — для каждого обновления вычисляется минимальное множество затронутых узлов в виде непрерывных интервалов на каждом слое.
Этот прогресс даёт важные сигналы о будущем отрасли, и технологический мир внимательно наблюдает.





