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

Что делает log compaction в Kafka и для чего применяется?

MiddleЭкосистема KafkaKafka
Ещё спрашивают так:
  • Что такое compacted topic?
Коротко

Compaction удаляет старые записи по ключу, оставляя последнее значение каждого ключа. Топик становится снимком состояния, который можно перечитать и восстановить.

  • Применения: changelog Kafka Streams, справочники, __consumer_offsets, CDC-снимки
  • Удаление ключа — запись с null-значением (надгробие), удаляется через delete.retention.ms
  • Порядок и offset сохраняются, просто часть записей исчезает

А ещё Похоже на компакцию LSM-дерева

Подробно

Это принципиально иная политика хранения, чем удаление по времени, и её легко перепутать со сжатием — здесь речь про версии записей, а не про алгоритм компрессии. Применение прямое: топик становится долговременным журналом текущего состояния, и новый потребитель, прочитав его с начала, получает актуальную картину без обращения к исходной базе. На этом построены внутренние топики состояния Kafka Streams и типичные справочники, реплицируемые между сервисами. Практические детали: удаление выражается записью с тем же ключом и пустым значением — надгробием, которое хранится ограниченное время, поэтому потребители должны успеть его прочитать; и уплотнение не мгновенно, поэтому дубли ключей какое-то время сосуществуют.

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

  • Что оставляет compaction.
  • Сценарии применения.
  • Надгробия для удаления.

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

  • Путать уплотнение по ключу со сжатием сообщений.
  • Публиковать в уплотняемый топик сообщения без ключа.

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

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

Показать варианты и ответ
  • ✗Сжимает сообщения алгоритмом компрессии (gzip, lz4, zstd) для экономии места на диске
  • ✓Хранит последнее значение по каждому ключу — топик становится журналом состояния
  • ✗Удаляет все сообщения старше заданного срока
  • ✗Объединяет несколько партиций в одну

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

  • Как в уплотняемом топике выражается удаление записи?
  • Почему Kafka Streams хранит состояние именно в таком топике?

Разбор темы

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

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

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

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

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