Приложение Kafka для нескольких потребителей - PullRequest
1 голос
/ 03 августа 2020

У меня есть kafka topi c с 50 разделами, а скорость публикации сообщений составляет 500 в секунду. В качестве потребительского дизайна порта pf мы можем иметь либо несколько потребителей со своими собственными потоками, либо одного потребителя, несколько рабочих потоков обработки с использованием одновременных прослушивателей.

Допустим, для обработки каждого сообщения требуется 100 мсек. Если мы используем одного потребителя и контейнер параллельного прослушивателя сообщений, тогда у нас будет 50 потоков в одном развертывании.

Если мы развернем несколько приложений с одинаковым идентификатором группы и назначим каждому приложению 10 параллельных потоков, тогда мы потребуется 5 развертываний. Повторная балансировка может быть проблемой, если одно из приложений перезапускается

Не могли бы вы предложить хороший подход или разделение topi c рекомендуется, если разделов слишком много

1 Ответ

0 голосов
/ 03 августа 2020

Да, вы правильно поняли. 5 экземпляров с параллелизмом 10 будут иметь один поток потребителя на раздел. Если вы развернете только 2 экземпляра, разделы будут распределены по 20 потокам.

Вы можете уменьшить перебалансировку, используя функцию недавнего stati c членство в группе .

group.instance.id

Уникальный идентификатор экземпляра-потребителя, предоставляемый конечным пользователем. Разрешены только непустые строки. Если установлено, потребитель рассматривается как член stati c, что означает, что только один экземпляр с этим идентификатором разрешен в группе потребителей в любое время. Это можно использовать в сочетании с увеличенным таймаутом сеанса, чтобы избежать перебалансировки групп, вызванной временной недоступностью (например, перезапусками процесса). Если не задан, потребитель присоединится к группе как член c динамического типа, что является традиционным поведением.

...