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

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

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

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

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

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

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

Подробно

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

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

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

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

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

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

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

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

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

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

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

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

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

Разбор темы

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

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

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

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

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