Несколько Kafka Stream против одного потока, использующего несколько тем - PullRequest
0 голосов
/ 29 октября 2018

Какая из следующих рекомендаций является лучшей практикой для производственной среды:

1: Один поток, состоящий из нескольких тем и пишущий для нескольких тем.

2: Создание нескольких потоков (каждый с различным app.id) для использования из другой темы и записи в другую тему.

Я не уверен насчет первого подхода, потому что, когда объем данных по всем темам увеличится, не будет ли потребитель отставать?

Какой фактор мне следует решить, какой из вышеуказанных подходов лучше всего подходит для моего сценария?

Обновление 1: у меня 2 темы. 1-я тема с 1 разделом (потому что мне нужно поддерживать порядок). 2-я тема с 6 разделами.

Ответы [ 2 ]

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

Я всегда советую вам использовать вариант 2, поскольку, используя вариант 2, мы также можем добиться отказоустойчивости, т. Е. Если один экземпляр вашего приложения перешел в раздел потока, обрабатываемый этим экземпляром, будет распространен на другие запущенные экземпляры. Если вы хотите использовать параллелизм, вы должны использовать один и тот же app.id для всех экземпляров потоковой обработки.

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

Это очень сильно зависит от вашего сценария использования (например, какую бизнес-логику делают потребители, как они развертываются: автономные приложения, кластеры и т. Д.). Ваш вопрос больше касается архитектуры. Оба решения являются жизнеспособными, особенности в вашем конкретном случае использования.

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

Что касается объема данных, имейте в виду, что большинство потребителей Kafka должны воспользоваться механизмом противодавления, чтобы они могли обрабатывать, сколько они потребляют.

...