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

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

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

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

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

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

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

Подробно

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

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

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

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

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

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

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

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

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

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

Разбор темы

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

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

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

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

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