Кафка-стрим, модель Threading - PullRequest
1 голос
/ 09 июля 2019

Можно ли с уверенностью сказать, что во всем и во всем в Kafka Stream задачи представляют подписки на разделы, а потоки представляют потребителей?

То есть, если существует 8 разделов, всегда будет 8 задач.Однако количество потребителей определяется количеством доступных потоков.Они распространяются на экземпляр приложения.Таким образом, один экземпляр приложения может представлять 2 потребителя при условии, что с ним связано 2 потока.

Для полного параллелизма с темой с 8 разделами у нас может быть 2 экземпляра приложения, в каждом из которых 4 потока, или один экземпляр приложения с 8 потоками и так далее.

1 Ответ

1 голос
/ 09 июля 2019

Да, количество задач будет равно максимальному количеству разделов в любом приложении потока Kafka

В случае, если есть две темы «A» и «B», каждая из которых имеет 8 разделов. Так что нет. задач будет max (8,8) = 8. Теперь каждый потребитель представляет поток. Если вы установите потоки как 2, то 2 потока будут распределять задачи между собой. Каждый поток получит 4 задачи для обработки.

Для полного параллелизма с темой с 8 разделами у нас может быть 2 экземпляр приложения, каждый из которых имеет 4 потока или одно приложение экземпляр с 8 потоками и т. д.

Вы должны использовать количество потоков для максимального количества разделов всегда для достижения полного параллелизма. Вы можете сделать это в нескольких экземплярах приложения или в одном.

Вот хорошо объясненная модель потоков Kstream.

https://docs.confluent.io/current/streams/architecture.html#parallelism-model

...