Я новичок и ищу совета по построению системы корреляции событий в реальном времени. У меня есть два основных варианта использования:
- Логика корреляции событий состоит из статических правил, основанных на типе события, поступающего во входной поток. В течение последних X минут коррелируйте события разных типов событий и выводите данные о событиях, которые имеют бизнес-ценность, на основе этих правил. Например, за последнюю 1 минуту проверьте, не превышает ли цена события типа A на торговой площадке A1 <20 000, а цена события типа B на торговой площадке M2 менее 30 000, затем добавьте данные события A в выходной поток, иначе добавьте данные события Б.
- Для событий, представляющих интерес / ценность для бизнеса, рассчитайте разницу в цене за последние X минут. Например, если при публикации применяются все правила, мы решаем, что событие A представляет интерес для последнего 1-минутного окна, перед добавлением данных о событии в выходной поток мы также хотим вычислить разницу в цене события A за последние 10 минут.
Чтобы реализовать эти варианты использования, я оценивал применение ключа по входному потоку по идентификатору типа продукта во входных данных. Это даст мне данные о нескольких типах событий для этого продукта для разных торговых площадок, а затем с использованием скользящего временного окна события периода ретроспективного анализа, скажем, последних 10 минут со скользящим окном в 1 минуту и применения ProcessWindowFunction для написания логики корреляции для данных за последние 1 минуту и использование других 9 минут данных для ретроспективного анализа и расчета разницы в ценах на интересующие события.
Я не совсем уверен, что это лучший способ их реализации. Любые советы / рекомендации будут очень признательны!