Продюсер

Продюсер

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

    1. Продюсеры сообщений в системах сообщений: в распределенных системах, использующих системы сообщений (например, Apache Kafka, RabbitMQ), продюсер генерирует и отправляет сообщения в темы или очереди, где они могут быть обработаны потребителями.

    2. Продюсеры в клиент-серверных приложениях: в клиент-серверной архитектуре распределенных систем продюсер может быть клиентским приложением, которое генерирует запросы и отправляет их серверу для обработки.

    3. Продюсеры в системах потоковой обработки данных: в системах потоковой обработки данных продюсеры генерируют и передают потоки данных, которые затем могут быть обработаны различными компонентами, такими как потребители данных.

    Рассмотрим ниже небольшой пример продюсера на примере брокера Kafka.

    Продюсер в системе Kafka, также известный как Kafka producer, представляет собой фрагмент кода, исполняемый на стороне приложения, который ответственен за генерацию и передачу сообщений Big Data другим получателям (consumer) в распределенном кластере Kafka. Каждый Kafka-продюсер включает в себя 2 атрибута [2]:

    • bootstrap.servers — список брокеров producer для соединения с кластером Kafka. Обычно рекомендуется использовать по меньшей мере два брокера, чтобы продюсер мог подключиться к кластеру при сбое одного из них;
    • value.serializer — класс-сериализатор, применяемый для сериализации (преобразования объектов в байтовый массив) ключей записей (сообщений) для отправки брокерам в кластере Kafka. В качестве сериализаторов используются классы StringSerializer (для сериализации строковых объектов) и IntegerSerializer (для сериализации целочсиленных объектов);

    Следующий фрагмент кода на языке Java отвечает за создание Kafka-продюсера [3]:

    import org.apache.kafka.clients.producer.Producer;
    import org.apache.kafka.clients.producer.ProducerConfig;
    import org.apache.kafka.clients.producer.ProducerRecord;
    import org.apache.kafka.common.serialization.StringSerializer;
    
    import java.util.Properties;
    
    public class KafkaProducerExample {
        public static void main(String[] args) {
            // Настройки для продюсера Kafka
            Properties properties = new Properties();
            properties.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, "local:9092");
            properties.put(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG, StringSerializer.class.getName());
            properties.put(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG, StringSerializer.class.getName());
    
            // Экземпляр продюсера Kafka
            Producer<String, String> producer = new org.apache.kafka.clients.producer.KafkaProducer<>(properties);
    
            // Параметры для отправки сообщения
            String topic = "my-topic";
            String key = "my-key"; // Может быть null
            String value = "my-value";
    
            ProducerRecord<String, String> record = new ProducerRecord<>(topic, key, value);
    
            // Отправка сообщения
            producer.send(record, (metadata, exception) -> {
                if (exception == null) {
                    System.out.printf("Сообщение успешно отправлено в топик%s с оффсетом %d%n",
                            metadata.topic(), metadata.offset());
                } else {
                    System.err.println("Ошибка при отправке сообщения: " + exception.getMessage());
                }
            });
    
            // Закрытие продюсера Kafka
            producer.close();
        }
    }

    Администрирование кластера Kafka

    Администрирование Arenadata Streaming Kafka

    Apache Kafka для инженеров данных

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

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

     

    Источники

    1. https://itglobal.com/ru-ru/company/blog/chto-takoe-raspredelennye-vychisleniya/
    2. https://kafka.apache.org/documentation/
    3. Н.Нархид, Г.Шапира, Т.Палино. Apache Kafka. Потоковая обработка и анализ данных