Вопрос с собеседования · Брокеры сообщений

Что такое topic, partition и offset в Kafka?

JuniorKafka: topic, partition, offsetKafka
Ещё спрашивают так:
  • Как Kafka хранит сообщения?
Коротко

Топик — именованный поток сообщений. Партиция — упорядоченный журнал, часть топика. Offset — номер сообщения внутри партиции.

  • Партиции распределены по брокерам и реплицируются
  • Сообщения дописываются в конец партиции и не изменяются
  • Потребитель хранит свою позицию (offset) и может её перемотать

А ещё Порядок гарантирован только внутри партиции

Подробно

Топик — логическая категория сообщений: orders, payments. Топик делится на партиции — это единица параллелизма, хранения и порядка. Каждая партиция — журнал на диске брокера (набор сегментов), в который сообщения только дописываются.

Offset — монотонно растущий номер записи в партиции. Он идентифицирует сообщение вместе с номером партиции и служит позицией потребителя: группа потребителей фиксирует (commit) последний обработанный offset в служебном топике __consumer_offsets и при перезапуске продолжает с него.

Хранение — по политике: удаление старше retention.ms или после retention.bytes, либо compaction — остаётся последнее значение по каждому ключу. Чтение сообщений их не удаляет.

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

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

  • Определения топика, партиции, offset.
  • Партиция как журнал с дописыванием.
  • Offset как позиция потребителя и хранение по политике.

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

  • Считать offset глобальным номером в топике.
  • Думать, что прочитанные сообщения удаляются.

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

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

Показать варианты и ответ
  • ✗Topic — таблица БД; partition — индекс; offset — строка
  • ✓Topic — логический поток; partition — упорядоченный лог; offset — номер записи в партиции
  • ✗Topic — поток событий; partition — копия топика на брокере; offset — номер сообщения во всём топике
  • ✗Topic — имя брокера; partition — его процесс; offset — порт

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

  • Как Kafka выбирает partition для сообщения?
  • Что будет при увеличении числа partitions?

Разбор темы

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

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

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

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

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