Вопрос проверяет понимание consumer group, механизма ребалансировки и ограничений масштабирования консьюмеров.
В одной consumer group каждая партиция может быть назначена только одному консьюмеру. Распределение происходит во время ребалансировки. Kafka использует специальные алгоритмы назначения партиций. Если консьюмеров больше, чем партиций, часть из них будет простаивать. Ребалансировка может временно приостановить обработку сообщений.
Механизм распределения партиций — это основа параллельной обработки данных в Kafka. Именно он определяет, кто и какие данные будет читать.
Consumer group — это набор консьюмеров, которые совместно читают топики, деля между собой партиции.
Kafka строго соблюдает правило:
одна партиция → один консьюмер в группе.
Следствия:
один консьюмер может читать несколько партиций;
одна партиция никогда не читается двумя консьюмерами одной группы.
Распределение (rebalance) происходит, когда:
консьюмер подключается к группе;
консьюмер отключается или падает;
меняется список топиков или партиций.
Во время ребаланса:
обработка сообщений временно останавливается;
партиции перераспределяются заново.
Kafka использует assignor-алгоритмы.
партиции распределяются «диапазонами»;
простой, но может давать неравномерную нагрузку.
партиции равномерно распределяются по консьюмерам;
часто даёт лучший баланс.
старается сохранить текущее распределение;
минимизирует количество перемещений партиций.
Важно помнить:
если 10 партиций и 20 консьюмеров → работают только 10;
добавление консьюмеров сверх партиций не ускоряет обработку;
частые ребалансы ухудшают стабильность.
заранее планировать число партиций;
избегать частого рестарта консьюмеров;
использовать sticky assignor в продакшене.
Распределение партиций в consumer group — это строгий и предсказуемый механизм: каждая партиция читается только одним консьюмером. Для эффективного масштабирования нужно правильно подбирать количество партиций и учитывать стоимость ребалансировок.