Какое правило связывает количество Consumer в группе и Partition в топике Kafka?

«Какое правило связывает количество Consumer в группе и Partition в топике Kafka?» — вопрос из категории Брокеры сообщений, который задают на 10% собеседований Java Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Основное правило: количество активных Consumer в группе не может превышать количество Partition в топике, на который они подписаны. Лишние Consumer будут бездействовать.

Почему это важно:

  • Каждая Partition может быть назначена только одному Consumer в рамках группы для гарантии порядка обработки сообщений.
  • Это ограничение определяет максимальный параллелизм чтения из топика.

Пример: Если топик orders имеет 3 партиции, а в группе processor-group 5 консьюмеров, то только 3 консьюмера получат назначение на партиции и будут обрабатывать данные. Остальные 2 останутся в idle-состоянии.

Рекомендации:

  • Для максимального параллелизма устанавливайте количество Consumer равным количеству Partition.
  • Чтобы увеличить пропускную способность обработки, сначала увеличьте количество партиций в топике (это требует пересоздания топика или использования специальных инструментов).