Что произойдёт, если потребителей в consumer group больше, чем партиций в топике?
- Почему добавление потребителей Kafka не ускорило обработку?
Лишние потребители простаивают: одна партиция в группе читается только одним потребителем, поэтому параллелизм группы не больше числа партиций.
- 6 партиций и 10 потребителей — 4 без работы (держат резерв на случай отказа)
- Ускорить: больше партиций или параллельная обработка внутри потребителя по ключу
- Увеличение партиций меняет распределение ключей — осторожно с порядком
А ещё Kafka Queues (KIP-932, share groups) снимают это ограничение для очередной модели
Подробно
Координатор группы назначает каждую партицию одному участнику. Если участников больше, чем партиций, части из них не достаётся ничего: они подключены, шлют heartbeat, но не получают сообщений. При падении работающего потребителя один из простаивающих подхватит его партиции — это горячий резерв, но не ускорение.
Как увеличить пропускную способность:
- больше партиций — заложить с запасом при создании топика; увеличение потом меняет
hash(key) % Nи нарушает порядок для существующих ключей на время перехода; - параллельная обработка внутри потребителя — читать партицию одним потоком, а обрабатывать в пуле, группируя по ключу, чтобы сохранить порядок сущности (библиотеки вроде Confluent Parallel Consumer);
- ускорить обработку — пакетная запись в базу, асинхронные вызовы.
Share groups (KIP-932, Kafka 4.x) — новая модель, где несколько потребителей читают одну партицию с подтверждением отдельных сообщений — очередная семантика без жёсткой привязки.
Что хотят услышать
- Лишние потребители простаивают и почему.
- Как реально ускорить обработку.
- Цена увеличения числа партиций.
Частые ошибки
- Масштабировать потребителей сверх числа партиций и ждать эффекта.
Проверьте себя
Один верный вариант. Подумайте, потом откройте ответ.
Показать варианты и ответ
- ✗Kafka автоматически создаст недостающие партиции
- ✗Партиции будут читаться несколькими потребителями параллельно
- ✗Лишние потребители получат копии всех сообщений
- ✓Лишние потребители простаивают: партицию в группе читает только один потребитель
Что спросят дальше
- Что такое rebalance?
- Когда offset commit делать до или после обработки?
Разбор темы
- Kafka Consumer и consumer group
Группа и распределение партиций, poll-цикл, heartbeat и таймауты, модели commit offset, ребаланс и роль идемпотентности.
Связанные вопросы
Разбор собеседования с sotto
После собеседования sotto разбирает разговор: оценка, каждый вопрос — хорошо, частично или слабо, чего не хватило в ответе и над чем поработать к следующему разу. Первые 30 минут бесплатно.