Получить доступ

Что произойдёт, если потребителей в consumer group больше, чем партиций в топике?

SeniorKafka ConsumerKafka
Ещё спрашивают так:
  • Почему добавление потребителей Kafka не ускорило обработку?
Коротко

Лишние потребители простаивают: одна партиция в группе читается только одним потребителем, поэтому параллелизм группы не больше числа партиций.

  • 6 партиций и 10 потребителей — 4 без работы (держат резерв на случай отказа)
  • Ускорить: больше партиций или параллельная обработка внутри потребителя по ключу
  • Увеличение партиций меняет распределение ключей — осторожно с порядком

А ещё Kafka Queues (KIP-932, share groups) снимают это ограничение для очередной модели

Так подсказку видит пользователь sotto на живом собеседовании — за пару секунд, пока вы думаете вслух.

Подробно

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

Как увеличить пропускную способность:

  • больше партиций — заложить с запасом при создании топика; увеличение потом меняет hash(key) % N и нарушает порядок для существующих ключей на время перехода;
  • параллельная обработка внутри потребителя — читать партицию одним потоком, а обрабатывать в пуле, группируя по ключу, чтобы сохранить порядок сущности (библиотеки вроде Confluent Parallel Consumer);
  • ускорить обработку — пакетная запись в базу, асинхронные вызовы.

Share groups (KIP-932, Kafka 4.x) — новая модель, где несколько потребителей читают одну партицию с подтверждением отдельных сообщений — очередная семантика без жёсткой привязки.

Что хотят услышать

  • Лишние потребители простаивают и почему.
  • Как реально ускорить обработку.
  • Цена увеличения числа партиций.

Частые ошибки

  • Масштабировать потребителей сверх числа партиций и ждать эффекта.

Проверьте себя

Один верный вариант. Подумайте, потом откройте ответ.

Показать варианты и ответ
  • ✓Лишние потребители простаивают — партиция в группе читается только одним потребителем
  • ✗Партиции будут читаться несколькими потребителями параллельно, и обработка ускорится
  • ✗Kafka автоматически создаст недостающие партиции
  • ✗Лишние потребители получат копии всех сообщений

Что спросят дальше

  • Что такое rebalance?
  • Когда offset commit делать до или после обработки?

Разбор темы

Связанные вопросы

Закрытая бета

Подсказки на собеседовании — в реальном времени

sotto слышит вопрос интервьюера и показывает короткий ответ и план, как в блоке «Коротко». Оставьте контакт — пришлём доступ и промокод.

  • Промокод на 2 часа — сверх пробных 30 минут
  • Программа для Windows — скачать сразу, войти — через Яндекс ID или VK ID
  • Прямая связь с разработчиком: что улучшить — сделаем