Вопрос с собеседования · Spring

У топика 6 партиций. Что даст параметр concurrency = 3 у @KafkaListener и что произойдёт при concurrency = 10?

MiddleSpring KafkaKafka
Ещё спрашивают так:
  • Что делает concurrency в @KafkaListener?
Коротко

concurrency = 3 — три потребителя в группе внутри экземпляра, по 2 партиции на каждого. При concurrency = 10 и 6 партициях 4 потребителя простаивают: партиция в группе читается одним потребителем.

  • Учитывать все экземпляры: 3 пода × concurrency 3 = 9 потребителей на 6 партиций
  • Больше параллелизма — больше партиций или параллельная обработка внутри потребителя
  • Каждый потребитель — свой поток

А ещё Порядок сохраняется внутри партиции

Подробно

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

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

  • Связь concurrency и партиций.
  • Простаивающие потребители.
  • Суммарно по экземплярам.

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

  • Наращивать concurrency сверх числа партиций и ждать роста пропускной способности.
  • Забывать, что увеличение числа партиций меняет распределение ключей.

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

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

Показать варианты и ответ
  • ✗Каждый из 3 потоков будет читать все 6 партиций параллельно, деля сообщения
  • ✓3 потребителя по 2 партиции; при 10 лишние 4 простаивают без партиций
  • ✗При concurrency = 10 партиции разделятся между потребителями дробно, по частям
  • ✗Параметр влияет только на число потоков обработки, но не на распределение партиций

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

  • Что произойдёт с порядком сообщений при добавлении партиций?
  • Как ребалансировка влияет на обработку?

Разбор темы

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

Партнёр платформы

Разбор собеседования с sotto

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

Разбор собеседования