← Назад ко всем вопросам

Как очищаются сообщения из Kafka

1️⃣ Как кратко ответить

Сообщения в Apache Kafka очищаются с помощью механизма ретеншн-политик, которые определяют, как долго сообщения хранятся в топиках. Основные политики включают временной ретеншн, основанный на времени хранения сообщений, и ретеншн по размеру, ограничивающий объем данных в топике. Также используется процесс компактификации, который удаляет старые версии сообщений с одинаковыми ключами, оставляя только последние версии.

2️⃣ Подробное объяснение темы

Apache Kafka — это распределенная платформа потоковой передачи данных, которая позволяет публиковать, хранить и обрабатывать потоки записей в реальном времени. Одной из ключевых особенностей Kafka является ее способность хранить большие объемы данных в течение определенного времени. Однако, чтобы управлять объемом хранимых данных и ресурсами, Kafka использует механизмы очистки сообщений.

Ретеншн-политики

Ретеншн-политики в Kafka определяют, как долго сообщения остаются в топиках. Существует два основных типа ретеншн-политик:

  1. Временной ретеншн (Time-based retention):

    • Сообщения хранятся в топике в течение определенного времени, после чего они удаляются. Это время задается в конфигурации топика с помощью параметра retention.ms.
    • Например, если retention.ms установлено на 604800000 миллисекунд (7 дней), сообщения, старше 7 дней, будут автоматически удалены.
  2. Ретеншн по размеру (Size-based retention):

    • Ограничивает общий объем данных, который может храниться в топике. Это задается с помощью параметра retention.bytes.
    • Когда объем данных превышает заданный лимит, старые сообщения удаляются, чтобы освободить место для новых.

Компактификация

Компактификация — это процесс, который удаляет старые версии сообщений с одинаковыми ключами, оставляя только последние версии. Это полезно для топиков, где важна только последняя версия данных для каждого ключа, например, для хранения состояния.

  • Компактификация настраивается с помощью параметра cleanup.policy, который может быть установлен в compact.
  • В отличие от временного или размерного ретеншна, компактификация не удаляет сообщения на основе времени или размера, а фокусируется на ключах сообщений.

Пример конфигурации топика

# Конфигурация топика с временным ретеншном на 7 дней и компактификацией
retention.ms=604800000
cleanup.policy=compact

Практическое применение

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

Как это работает

Когда сообщения публикуются в Kafka, они записываются в лог-сегменты на диске. Ретеншн-политики и компактификация управляют этими лог-сегментами, удаляя или сжимая их в зависимости от настроек. Это позволяет эффективно управлять ресурсами и поддерживать производительность системы, обеспечивая при этом доступ к актуальным данным.

Тема: Kafka и брокеры
Стадия: Tech

🔒 Подпишись на бусти автора и стань Алигатором, чтобы получить полный доступ к функционалу сайта и отслеживать свой прогресс!

Твои заметки