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

Kafka

курсы Kafka кластер администратор в Школе Больших Данных МоскваApache Kafka — распределенный программный брокер сообщений поддерживающий транзакционность при работе с потребителями и поставщиками событий:

  • публикует и подписывается на поток записей подобно очереди сообщений и корпоративной системе сообщений
  • хранит поток записей (событий) обеспечивая отказоустойчивость и надежность
  • обрабатывает поток записей (событий) по мере поступления

Apache Kafka обычно используется как Event Processing System (система обработки событий) для двух классов приложений:

  • построение потоков каналов данных в режиме реального времени (real-time streaming data pipelines)  с надежностью получения данных между системами и приложениями;
  • построение потоковых приложений работающих в режиме реального времени (real-time streaming applications) которые трансформируют или реагируют на данные потока.

Apache Kafka - брокер сообщений обеспечивающий распределенное хранение и доступ к сообщениям (событиям) с поддержкой транзакционности

или более красочно от Confluent 

Kafka A Streaming Platforms

 

Kafka-продюсеры и потребители: особенности работы

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

import org.apache.kafka.clients.producer.*;
import java.util.Properties;


public class KafkaProducerExample {
    public static void main(String[] args) {
        // Настройка свойств продюсера
        Properties properties = new Properties();
        properties.put("bootstrap.servers", "localhost:9092");
        properties.put("key.serializer", "org.apache.kafka.common.serialization.StringSerializer");
        properties.put("value.serializer", "org.apache.kafka.common.serialization.StringSerializer");


        // Создание продюсера
        Producer<String, String> producer = new KafkaProducer<>(properties);


        // Отправка сообщения в тему "example-topic"
        producer.send(new ProducerRecord<>("example-topic", "key1", "Hello, Kafka!"));


        // Закрытие продюсера
        producer.close();
    }
}

 

В приведенном выше примере кода мы создаем продюсера, задаем необходимые свойства (например, адрес сервера Kafka) и отправляем сообщение в топик «example-topic».

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

import org.apache.kafka.clients.consumer.*;
import java.time.Duration;
import java.util.Collections;
import java.util.Properties;


public class KafkaConsumerExample {
    public static void main(String[] args) {
        // Настройка свойств потребителя
        Properties properties = new Properties();
        properties.put("bootstrap.servers", "localhost:9092");
        properties.put("group.id", "example-group");
        properties.put("key.deserializer", "org.apache.kafka.common.serialization.StringDeserializer");
        properties.put("value.deserializer", "org.apache.kafka.common.serialization.StringDeserializer");


        // Создание потребителя
        Consumer<String, String> consumer = new KafkaConsumer<>(properties);


        // Подписка на тему "example-topic"
        consumer.subscribe(Collections.singletonList("example-topic"));


        // Получение сообщений
        while (true) {
            ConsumerRecords<String, String> records = consumer.poll(Duration.ofMillis(100));
            for (ConsumerRecord<String, String> record : records) {
                // Обработка полученного сообщения
                System.out.printf("Received message: key = %s, value = %s%n", record.key(), record.value());
            }
        }
    }
}

В данном примере кода потребитель подписывается на топик»example-topic» и ожидает получения сообщений. Полученные сообщения обрабатываются в цикле, выводя содержимое ключа и значения.

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

Apache Kafka, a Distributed Streaming Platform

  1. Проект Apache Kafka https://kafka.apache.org
  2. Почитать про Kafka  и попробовать https://www.confluent.io/product/confluent-platform/
  3. Учебные курсы  по Kafka на русском языке  или курсы Kafka на английском 

Related Entries

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