Ответ вслух Junior Kafka спрашивают часто обновлено

Consumer groups и масштабирование

Вопрос

Объясните, как работают группы консьюмеров в Kafka и как масштабировать обработку топика.

Попробуйте сами

Ответьте вслух за 2 минуты, как на собесе. Потом сверьтесь с тезисами: что прозвучало, а что нет.

Показать ответ и разбор

Коротко

Образцовый ответ: «Консьюмеры с одинаковым group.id делят партиции топика: каждая партиция в группе читается ровно одним консьюмером, а один консьюмер может читать несколько партиций. Поэтому максимальный параллелизм группы равен числу партиций, лишние консьюмеры простаивают.

Что должно прозвучать в ответе

  • Партиции делятся между консьюмерами группы, одна партиция одному консьюмеру

  • Потолок параллелизма группы равен числу партиций

  • Разные группы читают топик независимо

  • Оффсеты коммитятся по группе и партиции

  • Ребалансировка при входе и выходе консьюмеров

  • Lag как метрика: если растёт, масштабировать или оптимизировать

Что могут спросить следом

  • Что будет, если один консьюмер очень медленный?
  • Как увеличить параллелизм сверх числа партиций?

Разбор

Образцовый ответ: «Консьюмеры с одинаковым group.id делят партиции топика: каждая партиция в группе читается ровно одним консьюмером, а один консьюмер может читать несколько партиций. Поэтому максимальный параллелизм группы равен числу партиций, лишние консьюмеры простаивают. Разные группы независимы: каждая получает все сообщения и хранит свои оффсеты. Когда консьюмер приходит, падает или долго не вызывает poll, происходит ребалансировка. Масштабирую по lag: если он растёт, добавляю консьюмеров до числа партиций, дальше оптимизирую обработку или увеличиваю число партиций, помня, что это сломает соответствие ключей партициям. Ещё вариант: внутри консьюмера параллелить обработку по ключам, сохраняя порядок ключа».

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.