Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Задачи

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про Kafka: retention

Какие настройки retention существуют у топиков Kafka и как они влияют на хранение данных?

Вопрос проверяет понимание того, как Kafka управляет жизненным циклом данных и как настройки retention влияют на диск, производительность и возможность переобработки данных.

Короткий ответ

Retention в Kafka определяет, как долго и в каком объёме хранятся сообщения в топике. Данные могут удаляться по времени или по размеру. Также retention зависит от того, используется ли log compaction. Эти настройки напрямую влияют на использование диска и возможность перечитывать старые данные. Неправильные значения могут привести либо к потере данных, либо к переполнению дисков.

Длинный ответ

Kafka по умолчанию не удаляет сообщения после чтения. Вместо этого она хранит данные согласно правилам retention, которые настраиваются для каждого топика.

Определение

Retention policy — это набор правил, по которым Kafka определяет, какие данные можно удалить из топика.

1. Retention по времени

Самый распространённый вариант.

1.1. retention.ms

Определяет:

  • сколько времени сообщения хранятся в топике;

  • после какого срока они могут быть удалены.

Пример:

  • retention.ms = 7 days — сообщения хранятся примерно неделю.

Важно:

  • удаление происходит сегментами, а не по одному сообщению;

  • фактическое время хранения может быть чуть больше заданного.

1.2. Когда использовать

Подходит для:

  • event-логов;

  • аналитики;

  • возможности переобработки данных за фиксированный период.

2. Retention по размеру

Этот механизм ограничивает объём данных на диске.

2.1. retention.bytes

Определяет:

  • максимальный размер данных для топика или партиции.

Когда лимит превышен:

  • Kafka удаляет самые старые сегменты.

2.2. Когда использовать

Полезно, если:

  • диск ограничен;

  • поток данных неравномерный;

  • важнее контролировать размер, чем точное время хранения.

3. Комбинация времени и размера

Kafka применяет правило:

  • удалить данные, если выполнено хотя бы одно условие.

То есть:

  • если данные старые или

  • если превышен размер.

Это даёт гибкость, но требует аккуратной настройки.

4. Retention и log compaction

Если у топика включён cleanup.policy=compact:

  • retention по времени работает иначе;

  • Kafka гарантирует сохранение последнего сообщения по ключу.

Возможные варианты:

  • compact — только актуальные значения;

  • delete — классическое удаление;

  • compact,delete — гибридный режим.

5. Практические ошибки

Частые проблемы в продакшене:

  • слишком маленький retention → нельзя восстановить данные;

  • слишком большой retention → заканчивается диск;

  • одинаковые настройки для всех топиков без учёта их смысла.

6. Краткий вывод

Retention-настройки определяют, сколько данных Kafka может «помнить». Их нужно подбирать исходя из бизнес-требований, возможностей диска и необходимости переобработки данных. Универсальных значений не существует.

  • Аватар

    Python Guru

    Sergey Filichkin

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.

Уровень

  • Рейтинг:

    5

  • Сложность:

    7

Навыки

  • Kafka

    Kafka

Ключевые слова

#retention

Подпишись на Python Developer в телеграм

  • Аватар

    Python Guru

    Sergey Filichkin

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.