Что такое topic, partition и offset в Kafka?
- Как 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?
Разбор темы
- Kafka: topic, partition, offset
Распределённый append-only лог, партиция как единица масштаба и упорядоченности, ключ и порядок, retention и log compaction, replay.
Связанные вопросы
Разбор собеседования с sotto
После собеседования sotto разбирает разговор: оценка, каждый вопрос — хорошо, частично или слабо, чего не хватило в ответе и над чем поработать к следующему разу. Первые 30 минут бесплатно.