Как добиться многопроцессорности при потреблении кафки сообщений без разбиения темы? - PullRequest
0 голосов
/ 03 октября 2018

В моей теме только один раздел, но мне нужно добиться многократной обработки.У меня огромное количество сообщений, созданных асинхронно, и я хочу прочитать все эти сообщения асинхронно и зафиксировать каждое сообщение.

1 Ответ

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

AFAIK, вы не можете достичь параллельной обработки, не имея более одного раздела (то есть, по крайней мере, двух).В Кафке разделы - это уровень параллелизма.Кроме того, чем больше разделов в кластере Kafka, тем выше пропускная способность, которую можно достичь.

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

Чтобы увеличить количество разделов существующей темы, вы можете просто запустить

bin/kafka-topics.sh --zookeeper localhost:2181 --alter --topic topicName --partitions 40

Это не будет перемещать существующие данные, хотя

Примечание по потребителям, группам потребителей и разделам
Если у вас N разделов, то в одной группе потребителей может быть до N потребителей, каждый из которых считывает данные из одного раздела.Если у вас меньше потребителей, чем у разделов, то некоторые из них будут читать из более чем одного раздела.Кроме того, если у вас больше потребителей, чем разделов, то некоторые из них будут неактивны и вообще не будут получать сообщений.

...