A B C D E F G H I K L M N O P R S T W Y Z Б В Е И К М О П Т Ц

Kafka topic

Управление Apache Kafka

 

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

Ключевые характеристики

Имя топика

Каждый топик имеет уникальное имя, которое используется производителями (producers) для публикации сообщений и потребителями (consumers) для их чтения. Существуют ограничения на использования специальных символов и зарегистрированных слов. Для удобства пользования лучше продумать политику именования топиков и следовать ей неукоснительно. Простое информативное иерархическое имя, возможно с цифровым префиксом позволит Вам легко разобраться в сотнях топиков в консоли или GUI.

Kafka Topics name structure - https://kafka-school.ru

Разделы (Partitions) и Репликация (Replication)

Топики делятся на разделы (partitions). Раздел — это упорядоченный, неизменяемый журнал сообщений. Каждое сообщение, добавленное в раздел, получает последовательный идентификатор, называемый смещением (offset). Разделы позволяют Kafka масштабироваться горизонтально, так как данные топика могут быть распределены по нескольким брокерам (брокеры — это серверы Kafka). Чем больше разделов, тем выше параллелизм обработки сообщений.

Каждый раздел может быть реплицирован на несколько брокеров. Это обеспечивает отказоустойчивость: если один брокер выходит из строя, его реплики на других брокерах могут продолжить обслуживать запросы. Количество реплик для раздела называется фактором репликации (replication factor). Одна из реплик является лидером (leader), а остальные — последователями (followers). Только лидер обрабатывает операции записи и чтения, а последователи синхронизируются с лидером.

Срок хранения сообщений (Retention Policy) и очередность сообщений в топиках Kafka

Kafka позволяет настроить политику хранения сообщений для каждого топика. Сообщения могут храниться в течение определенного периода времени (например, 7 дней) или до достижения определенного размера. По истечении срока хранения старые сообщения автоматически удаляются. Внутри одного раздела Kafka гарантирует порядок сообщений: сообщения записываются и читаются в том порядке, в котором они были опубликованы. Однако порядок сообщений между разными разделами не гарантируется.

Принцип работы топиков

Когда производитель отправляет сообщение в топик, он указывает имя топика. Kafka распределяет это сообщение по одному из разделов топика, используя ключ сообщения (если он есть) для обеспечения детерминированного распределения или круговой алгоритм (round-robin), если ключ отсутствует. Потребители, подписанные на топик, могут читать сообщения из одного или нескольких разделов. Каждый потребитель в одной группе потребителей читает сообщения из уникального подмножества разделов, что позволяет параллельно обрабатывать сообщения.

Примеры использования

Топики Kafka используются в широком спектре сценариев, включая:

  • Сбор логов: Различные сервисы публикуют свои логи в топик ‘application_logs’.
  • Потоковая обработка данных: Данные о продажах отправляются в топик ‘sales_events’ для анализа в реальном времени.
  • Обмен сообщениями: Микросервисы обмениваются сообщениями через топики для асинхронной коммуникации.
  • Отслеживание событий: События пользовательской активности (например, клики, просмотры страниц) публикуются в топик ‘user_activity’.

Управление топиками: Утилиты командной строки и примеры

Управление топиками осуществляется с помощью утилит командной строки Kafka (например, kafka-topics.sh) или через клиентские библиотеки.

Создание нового топика

Создание топика с 3 разделами и фактором репликации 1:

bin/kafka-topics.sh --create --topic my_new_topic --bootstrap-server localhost:9092 --partitions 9 --replication-factor 3

ручное создание топика Kafka

Обратите внимание на предупреждение о том что нельзя использовать точки “.” вместе с подчеркиванием “_”.

Просмотр списка топиков

Получение списка всех доступных топиков:

bin/kafka-topics.sh --list --bootstrap-server localhost:9092

Описание топика

Просмотр детальной информации о конкретном топике, включая его разделы, реплики и лидеров:

bin/kafka-topics.sh --describe --topic my_new_topic --bootstrap-server localhost:9092

Изменение топика (добавление разделов)

Увеличение количества разделов для существующего топика (обратите внимание: уменьшить количество разделов невозможно):

bin/kafka-topics.sh --alter --topic my_new_topic --bootstrap-server localhost:9092 --partitions 5

Удаление топика

Удаление топика (требуется активация в настройках брокера delete.topic.enable=true):

bin/kafka-topics.sh --delete --topic my_new_topic --bootstrap-server localhost:9092

Инструменты по работе с топиками Kafka - https://bigdataschool.ru

 

 

 

Добавить комментарий