Что такое автономный потребитель и какова его роль для Kafka

курсы администраторов spark, kafka cluster, курсы администраторов, обучение kafka, курсы kafka, курсы администраторов, kafka для начинающих, курсы администрирования kafka, apache kafka примеры, курс spark streaming, apache kafka

В прошлый раз мы говорили про особенности механизма десериализации в брокере Apache Kafka. Сегодня поговорим про автономных потребителей в Kafka для работы с массивами Big Data. Читайте далее про особенности работы с автономными потребителями в кластере Kafka, благодаря которым удается избежать автоматической перебалансировки разделов, существенно замедляющей приложение.

Как работает автономный потребитель в Kafka: особенности работы с конкретными разделами

Автономный потребитель (standalone consumer) — это потребитель, который не входит ни в одну группу потребителей и служит для постоянного (без переназначения) считывания данных из разделов топиков в кластере Kafka. Автономный потребитель используется только в том случае, если заранее известны разделы топика для чтения и их количество. В этом случае пропадает необходимость подписываться на весь топик целиком и создавать группу потребителей, достаточно просто назначить необходимые разделы для постоянного считывания данных [1].

курсы администраторов spark, kafka cluster, курсы администраторов, обучение kafka, курсы kafka, курсы администраторов, kafka для начинающих, курсы администрирования kafka, apache kafka примеры, курс spark streaming, apache kafka
Схема работы автономного потребителя

Особенности работы с автономным потребителем в брокере Kafka: несколько практических примеров

Для того, чтобы начать работу по созданию автономного потребителя, необходимо сделать запрос кластеру Kafka на наличие доступных разделов в топике с помощью метода partitionsFor(). Следующий код на языке Java отвечает за запрос у Kafka-кластера всех доступных разделов топика [1]:

List<PartitionInfo> partitionInfos = null;
partitionInfos = consumer.partitionsFor("topic");

После того, как получены все доступные разделы, можно выбирать необходимые потребителю разделы, из которых он будет считывать данные. Для этого необходимо в метод assign() передать в качестве параметров имена всех необходимых разделов. Следующий код на языке Java отвечает за назначение разделов для автономного потребителя [1]:

if (partitionInfos != null) {
for (PartitionInfo partition : partitionInfos)
partitions.add(new TopicPartition(partition.topic(),
partition.partition()));
//передаем список имен разделов
consumer.assign(partitions);

Для считывания потребителем данных из необходимых ему разделов необходимо создать среду получения данных в реальном времени через цикл опроса (бесконечный цикл, отвечающий за извлечение данных из разделов топика). Следующий код на языке Java отвечает за извлечение данных из необходимых потребителю разделов в момент их поступления [1]:

//бесконечный цикл опроса
while (true) {
// ожидание поступления данных и их получение
ConsumerRecords<String, String> records = consumer.poll(1000);
for (ConsumerRecord<String, String> record: records) {
System.out.printf("topic = %s, partition = %s, offset = %d,
customer = %s, country = %s\n",
record.topic(), record.partition(), record.offset(),
record.key(), record.value());
}
consumer.commitSync();
}
}

Таким образом, благодаря поддержке механизма автономного потребителя, брокер Kafka гарантирует получение необходимых данных независимо от остальных потребителей, что существенно ускоряет работу приложения благодаря избеганию постоянной перебалансировки разделов. Это делает Apache Kafka универсальным и надежным средством для хранения и обмена большими потоками данных, что позволяет активно использовать этот брокер сообщений в задачах Data Science и разработке распределенных приложений. В следующей статье мы поговорим про создание Kafka-производителя.

Освоить Apache Kafka на профессиональном уровне в качестве администратора Big Data кластеров, разработчика распределенных приложений и прочих прикладных областях Data Science вы сможете на практических курсах по Kafka в нашем лицензированном учебном центре обучения и повышения квалификации ИТ-специалистов в Москве:

Записаться на курс

Смотреть раcписание

Источники

  1. Н.Нархид, Г.Шапира, Т.Палино. Apache Kafka. Потоковая обработка и анализ данных

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

Поиск по сайту