Топология динамических потоков в Кафке - PullRequest
1 голос
/ 18 июня 2019

При создании Kafka Streams с использованием Kafka Streams DSL https://kafka.apache.org/0110/documentation/streams/developer-guide

мы столкнулись со сценарием, в котором нам нужно обновить потоки Кафки новым определением топологии.

Например: Когда мы начинали, у нас была определена топология для чтения из одной темы (Source) и целевой темы (Sink). Однако при изменении конфигурации нам теперь нужно прочитать две разные темы (если хотите, 2 источника) и написать одну тему назначения.

Из того, что мы создали прямо сейчас, определение топологии жестко закодировано, что-то вроде определения в топология процессора .

Вопросы:

  1. Можно ли определить топологию декларативным способом (скажем, в Json или чем-то еще), который не требует кодификации топологии?

  2. Можно ли перезагрузить существующий поток Kafka для использования нового определения топологии потоков Kafka?

  3. Для # 2, упомянутого выше, предоставляет ли Kafka Streams DSL способ «перезагрузить» новые определения топологии с помощью внешнего триггера или системного вызова?

Мы используем JDK 1.8 и Kafka DSL 2.2.0

Спасибо, Ayusman

1 Ответ

2 голосов
/ 18 июня 2019

Можно ли определить топологию декларативным способом (скажем, в Json или чем-то еще), который не требует кодификации топологии?

KStreams DSLдекларативный, но я предполагаю, что вы имеете в виду нечто иное, чем DSL?

Если так, ответ - нет. Однако вы можете посмотреть на KSQL.

Возможно липерезагрузить существующий Kafka Stream, чтобы использовать новое определение топологии Kafka Streams?

Вы имеете в виду, может ли существующее приложение Kafka Streams перезагрузить новое определение топологии обработки?Если да, то ответ «Нет». В таких случаях вы развернете новую версию своего приложения.

В зависимости от того, как определены старые / новые топологии, может потребоваться простое обновление вашего приложения (примерно: если изменение топологии было минимальным), но, вероятно, вам нужно будет развернуть новое приложение отдельно, а затем, после проверки нового, вывести из эксплуатации старое приложение.

Примечание: KStreams - это библиотека Java иПо замыслу, не включает в себя функциональность для управления / управления Java-приложениями, использующими библиотеку KStreams.

Для упомянутой выше # 2, предоставляет ли Kafka Streams DSL способ «перезагрузить» новые определения топологиис помощью внешнего триггера или системного вызова?

Нет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...