Редактирование правил в реальном времени и потоки KafkaStreams

#complex-event-processing #siddhi #apache-kafka-streams

#сложная обработка событий #сиддхи #apache-kafka-streams

Вопрос:

У меня есть требование разрешить «бизнес-пользователям» создавать и редактировать правила для данных, поступающих из входных потоков. Правила должны быть удобными для бизнеса, и не должно быть никаких циклов разработки. Вот пример того, о чем я думаю:

 "if weatherStation.id == 100 and weatherStation.temp < 33 and detectedPctWipersOn = 90% 
then return true 
else return false"
  

Поскольку данные потоковой передачи метеостанции и подключенного транспортного средства поступают, мне нужно применить это правило, но если правило изменится, скажем, на detectedPctWipersOn = 75%, правило должно применяться в режиме реального времени без повторного развертывания или перезапуска. Он должен управляться данными.

Siddhi CEP (WSO2 CEP), похоже, поддерживает только «развернутые» правила. Существуют ли какие-либо другие продукты CEP, которые могли бы обеспечить выполнение того, что мне нужно, особенно если они хорошо работают с KafkaStreams?

Если мне нужно свернуть самостоятельно, есть ли шаблон проектирования «потоки», который рекомендуется для решения этой проблемы?

Комментарии:

1. Ваш вопрос связан с потоками Kafka? Я не уверен, используете ли вы правильный тег.

2. Я удалил тег Siddhi. Да, я ищу удобный для бизнеса редактор правил, который хорошо интегрирует потоки Kafka. Я упомянул Siddhi только для того, чтобы показать, что он не соответствует моим требованиям к этому вопросу.

3. На самом деле мне было интересно, был ли предназначен тег Kafka Streams 🙂 Мне не был понятен ваш вопрос. Поскольку я не знаю Сиддхи, я не уверен в ответе. Однако, с точки зрения потоков Kafka, я не вижу никаких проблем, почему вы не можете обновлять приложение новыми правилами. Вам нужно только иметь в виду, что если вы начнете масштабироваться, будет сложно обновлять все экземпляры синхронно.

Ответ №1:

Для этого требования вместо использования механизма Siddhi попробуйте использовать продукт CEP. Он поставляется со средством создания шаблонов запросов, где вы можете иметь несколько предопределенных шаблонов, параметры которых доступны только пользователям для настройки. например: WeatherStationTemperature. Как только параметр будет изменен, внутренняя CEP повторно развернет запросы, и изменения вступят в силу немедленно.

Это очень хорошо работает для запросов без состояния, таких как фильтры, как в вашем примере, Но состояние будет потеряно, если вы используете windows, шаблоны и т. Д. Поэтому вам, вероятно, потребуется использовать таблицы / окна с поддержкой базы данных для правильной реализации таких вариантов использования.