https://kafka.apache.org/intro
Когда я начал изучать кафку;У меня такой же вопрос.Следующее объяснение поможет вам ответить на ваш вопрос:
Допустим, у вас есть тема A с 3 разделами: X, Y и Z.
Первое, что нужно понять, это то, как данные распределяются по разделам:
Производитель может выбрать, в какой раздел будет отправлено сообщение.Таким образом, ваш производитель может отправить сообщение № 1 в раздел-X, сообщение № 2 в раздел-Y и сообщение № 3 в раздел-Z.Таким же образом другие производители могут выбирать, в какой раздел будут записаны данные.Если ваш производитель не выберет раздел, то kafka выберет для вас.Для дополнительной информации;Пожалуйста, проверьте API производителя.Производитель никогда не должен отправлять сообщение № 1 в раздел-X, раздел-Y и раздел-Z.Вы можете создавать реплики для обеспечения отказоустойчивости. Разделы не являются репликами .
Теперь потребитель подписывается на вашу тему.Кафка увидит, сколько потребителей активно в пределах группы потребителей.Он может распределить раздел для потребителя следующим образом:
![Kafka partition distribution](https://i.stack.imgur.com/YDvGG.png)
(на изображении; P0, P1, P2 и P3 - разделы. Группа потребителей Aимеет потребителей C1 и C2. C1 прослушивает P0, P3 и C2 слушает P1 и P2. В конце концов, ваша группа потребителей A получит данные из всех разделов.)
- Если ваша группа потребителей имела3 потребителя, и вы добавляете одного нового потребителя, тогда он будет сидеть идеально. Нет потребителей в группе потребителей <= количество разделов </strong>.
- Если в вашей группе потребителей было 2 потребителя, и вы добавили нового, то сработает перебалансировка.Kafka назначит один раздел вашему потребителю.
- Если это новая группа потребителей, то kafka назначит все разделы этому новому потребителю.
Теперь давайте предположим;ваш потребитель является однопоточным, и обработка сообщения занимает около 1 секунды, тогда ваша пропускная способность будет равна 1 мсг / с в случае № 3.
в случае № 2;это будет 3 мсг / сек.Потому что каждый потребитель слушает разные разделы и обрабатывает данные.
В случае № 1;Вы не получите никакой выгоды.