Этот вопрос проверяет понимание ограничений масштабирования consumer’ов в Kafka.
Если consumer’ов больше, чем partition’ов, часть consumer’ов останется без работы. Kafka не может назначить один partition нескольким consumer’ам в одной группе. Такие consumer’ы будут находиться в состоянии ожидания. Они начнут получать данные только если появятся новые partition’ы или часть consumer’ов отключится. Это нормальное и ожидаемое поведение Kafka.
Kafka придерживается строгого правила:
один partition может быть назначен только одному consumer’у в группе
Рассмотрим ситуацию:
topic содержит 3 partition’а
consumer group содержит 5 consumer’ов
В результате:
3 consumer’а получат по одному partition’у
2 consumer’а не получат ни одного partition’а
Consumer без partition’ов:
остается активным участником группы
не читает сообщения
может быть использован при rebalance
Избыточные consumer’ы начинают работать, если:
увеличивается количество partition’ов
один из активных consumer’ов отключается
происходит rebalance группы
Добавление consumer’ов сверх количества partition’ов не увеличивает производительность и может привести к лишнему потреблению ресурсов.
Максимальный параллелизм consumer group ограничен количеством partition’ов, а лишние consumer’ы остаются без нагрузки.