Что делает log compaction в Kafka и для чего применяется?
- Что такое compacted topic?
Compaction удаляет старые записи по ключу, оставляя последнее значение каждого ключа. Топик становится снимком состояния, который можно перечитать и восстановить.
- Применения: changelog Kafka Streams, справочники, __consumer_offsets, CDC-снимки
- Удаление ключа — запись с null-значением (надгробие), удаляется через delete.retention.ms
- Порядок и offset сохраняются, просто часть записей исчезает
А ещё Похоже на компакцию LSM-дерева
Подробно
Это принципиально иная политика хранения, чем удаление по времени, и её легко перепутать со сжатием — здесь речь про версии записей, а не про алгоритм компрессии. Применение прямое: топик становится долговременным журналом текущего состояния, и новый потребитель, прочитав его с начала, получает актуальную картину без обращения к исходной базе. На этом построены внутренние топики состояния Kafka Streams и типичные справочники, реплицируемые между сервисами. Практические детали: удаление выражается записью с тем же ключом и пустым значением — надгробием, которое хранится ограниченное время, поэтому потребители должны успеть его прочитать; и уплотнение не мгновенно, поэтому дубли ключей какое-то время сосуществуют.
Что хотят услышать
- Что оставляет compaction.
- Сценарии применения.
- Надгробия для удаления.
Частые ошибки
- Путать уплотнение по ключу со сжатием сообщений.
- Публиковать в уплотняемый топик сообщения без ключа.
Проверьте себя
Один верный вариант. Подумайте, потом откройте ответ.
Показать варианты и ответ
- ✗Сжимает сообщения алгоритмом компрессии (gzip, lz4, zstd) для экономии места на диске
- ✓Хранит последнее значение по каждому ключу — топик становится журналом состояния
- ✗Удаляет все сообщения старше заданного срока
- ✗Объединяет несколько партиций в одну
Что спросят дальше
- Как в уплотняемом топике выражается удаление записи?
- Почему Kafka Streams хранит состояние именно в таком топике?
Разбор темы
- Kafka API и экосистема
Клиентские API, Kafka Connect и Debezium, Streams и stream-processing, ksqlDB, Schema Registry и MirrorMaker для multi-DC.
Связанные вопросы
Разбор собеседования с sotto
После собеседования sotto разбирает разговор: оценка, каждый вопрос — хорошо, частично или слабо, чего не хватило в ответе и над чем поработать к следующему разу. Первые 30 минут бесплатно.