Развернуть топологию потоковой обработки во время выполнения? - PullRequest
0 голосов
/ 05 октября 2018

H все,

У меня есть требование, в котором мне нужно повторно принять некоторые из моих старых данных.У нас есть многоступенчатый конвейер, источником которого является тема Кафки.Как только запись вводится в нее, она проходит через серию шагов (около 10).Каждый шаг массирует исходный объект JSON, помещенный в исходную тему, и перемещает ее в целевую тему.

Теперь иногда нам необходимо повторно загрузить более старые данные и применить поднабор шагов, которые я описал выше.Мы намерены перенести эти повторные записи в другую тему, чтобы не блокировать поступающие «живые» данные. Это может означать, что мне может потребоваться применить всего 1 шаг из 10, которые я описал выше.Выполнение его по всему конвейеру сверху бесполезно, так как каждый шаг довольно ресурсоемок и требует нескольких внешних сервисов.Кроме того, мне может понадобиться повторно вводить миллионы записей одновременно, чтобы я мог перекрыть свои внешние службы.И, наконец, эти повторные мероприятия не так часты и могут происходить раз в неделю.

Скажем, смогу ли я выяснить, какие шаги сверху мне нужно выполнить.Это можно сделать с помощью базового механизма правил.Как только это будет сделано, я должен иметь возможность динамически создавать топологию / иметь возможность развертывать ее, которая начинает обработку из вновь созданной темы.Опять же, причина, по которой я хочу развернуть во время выполнения, состоит в том, что эти действия, хотя и критически важные для бизнеса, не происходят так часто.И каждый раз, шаги, которые мне нужно выполнить, могут меняться, поэтому мы не всегда можем запустить весь конвейер.

Есть ли способ достичь этого?Или, может быть, я даже думаю в правильном направлении, то есть подход, который я изложил выше, является даже правильным?Любые указатели будут полезны.

1 Ответ

0 голосов
/ 06 октября 2018

Я бы посоветовал вам создать эти динамические топологии для повторно загружаемых данных в виде отдельного приложения Kafka Streams.И если вы хотите программно создавать такие приложения на лету и завершать их, когда закончите, рассмотрите следующие способы:

  1. Сделайте каждый из ваших шагов настраиваемым: у вас может быть передан список параметров ручкии в зависимости от них создайте топологию повторного приема на лету.
  2. Если вы хотите автоматически запускать такие конвейеры повторного приема, рассмотрите возможность использования некоторых инструментов развертывания, включенных для вызова KafkaStreams # start.
...