Как вы узнаете, когда нужно разделить приложение Kafka Streams на несколько приложений?
Например, я работаю над контейнерным приложением Streams, которое обрабатывает записи, передаваемые из базы данных, и выводит их в новоепоток.Каждая таблица имеет свой собственный поток - как на стороне потребления, так и на стороне производства - и каждый создаваемый новый поток должен использоваться для одной и той же логической цели.
В этом случае целесообразно разделитьприложение в отдельные потоковые приложения для каждого табличного потока или лучше выполнить всю эту обработку в одном приложении?
Вот то, что я вижу как плюсы и минусы разделения приложения Kafka Streamsв несколько приложений:
Плюсы
- Изменение способа обработки конкретного потока таблицы в будущем означает только необходимость перезапустить контейнеры, которые выполняют эту обработку.
- Каждое приложение чрезвычайно легкое и предназначено для одной цели (в этом примере обрабатывать поток таблицы базы данных и выводить этот новый способ).
Минусы
- Управление всеми этими дополнительными контейнерами становится более сложным.
- Код шаКольцо становится более сложным, поскольку общие ресурсы, такие как сериализаторы / десериализаторы, теперь должны превращаться в библиотеки, а не импортироваться из другого раздела приложения.