Kafka: explicación detallada, tutorial de uso y ejemplos

Kafka: introducción detallada, tutoriales y ejemplos

¿Qué es Kafka?

Kafka es una plataforma de procesamiento de flujo distribuido desarrollada originalmente por LinkedIn y se ha convertido en un proyecto de alto nivel de la Fundación Apache. Conocido por su alto rendimiento, confiabilidad y escalabilidad, se usa ampliamente en escenarios como transmisión de datos en tiempo real, recopilación de registros, procesamiento de eventos y análisis de transmisión. Kafka está diseñado para manejar flujos de datos a gran escala, lo que lo hace ideal para crear aplicaciones distribuidas modernas.

Conceptos centrales de Kafka

Antes de sumergirnos en el tutorial de uso de Kafka, primero introduzcamos algunos conceptos básicos de Kafka, que son la base para comprender Kafka:

  • Broker: cada nodo de servidor en el clúster de Kafka se denomina Broker y es responsable de almacenar y procesar datos.

  • Tema: el tema de la publicación de mensajes, que es la categoría del flujo de datos. Los productores publican mensajes sobre temas y los consumidores se suscriben a ellos.

  • Partición: cada tema se puede dividir en varias particiones y cada partición es una cola de mensajes ordenada. La partición permite que los datos se distribuyan horizontalmente y se procesen en paralelo.

  • Productor: El publicador de datos, que envía mensajes a uno o más Temas.

  • Consumidor: un suscriptor de datos que consume mensajes de uno o más temas.

  • Grupo de consumidores: un conjunto de consumidores que consumen conjuntamente un mensaje de tema. Cada partición solo puede ser consumida por un consumidor de un grupo de consumidores.

  • Offset: el identificador único de cada mensaje en la partición. Los consumidores utilizan Offset para rastrear los mensajes consumidos.

¿Cómo utilizar Kafka?

El siguiente es un tutorial detallado sobre el uso de Kafka, que presenta completamente el uso de Kafka desde la instalación hasta ejemplos prácticos:

1. Instale e inicie Kafka

Primero, necesitas instalar Kafka. Puede descargar la última versión desde el sitio web oficial (https://kafka.apache.org/downloads) y seguir la guía para instalarla. Una vez completada la instalación, debe iniciar el servidor Kafka y ZooKeeper.

Inicie ZooKeeper (Kafka depende de ZooKeeper):

bin/zookeeper-server-start.sh config/zookeeper.properties

Luego, inicie el servidor Kafka:

bin/kafka-server-start.sh config/server.properties

2. Crear tema

En Kafka, necesita crear uno o más temas para almacenar mensajes. Cree un my-topictema nombrado con el siguiente comando:

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

Esto creará un my-topictema nombrado con 3 particiones y 1 réplica.

3. Usando el productor Kafka

Los productores de Kafka se utilizan para publicar mensajes en el tema especificado. A continuación se muestra un ejemplo sencillo de productor de Java:

import org.apache.kafka.clients.producer.KafkaProducer;
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) {
    
    
        Properties properties = new Properties();
        properties.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, "localhost:9092");
        properties.put(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG, StringSerializer.class.getName());
        properties.put(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG, StringSerializer.class.getName());

        KafkaProducer<String, String> producer = new KafkaProducer<>(properties);
        String topic = "my-topic";

        for (int i = 0; i < 10; i++) {
    
    
            String message = "Message " + i;
            producer.send(new ProducerRecord<>(topic, message));
            System.out.println("Sent: " + message);
        }

        producer.close();
    }
}

4. Uso de consumidores de Kafka

Los consumidores de Kafka se suscriben y procesan mensajes del tema. A continuación se muestra un ejemplo de un consumidor de Java simple:

import org.apache.kafka.clients.consumer.Consumer;
import org.apache.kafka.clients.consumer.ConsumerConfig;
import org.apache.kafka.clients.consumer.ConsumerRecords;
import org.apache.kafka.clients.consumer.KafkaConsumer;
import org.apache.kafka.common.serialization.StringDeserializer;

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(ConsumerConfig.BOOTSTRAP_SERVERS_CONFIG, "localhost:9092");
        properties.put(ConsumerConfig.GROUP_ID_CONFIG, "my-group");
        properties.put(ConsumerConfig.KEY_DESERIALIZER_CLASS_CONFIG, StringDeserializer.class.getName());
        properties.put(ConsumerConfig.VALUE_DESERIALIZER_CLASS_CONFIG, StringDeserializer.class.getName());

        Consumer<String, String> consumer = new KafkaConsumer<>(properties);
        String topic = "my-topic";

        consumer.subscribe(Collections.singletonList(topic));

        while (true) {
    
    
            ConsumerRecords<String, String> records = consumer.poll(Duration.ofMillis(100));
            records.forEach(record -> {
    
    
                System.out.println("Received: " + record.value());
            });
        }
    }
}

5. Ejecute el ejemplo

Primero, abra una ventana de terminal y ejecute el ejemplo del productor Kafka:

java KafkaProducerExample

Luego, abra otra ventana de terminal y ejecute el ejemplo del consumidor de Kafka:

java KafkaConsumerExample

Verás que los mensajes enviados por el productor son recibidos y procesados ​​por el consumidor.

Resumir

Kafka es una poderosa plataforma de procesamiento de flujo distribuido para transmisión y procesamiento de datos en tiempo real. A través de la introducción detallada, los tutoriales y los ejemplos de este artículo, podrá comprender los conceptos básicos de Kafka, instalar, crear temas y utilizar productores y consumidores, a fin de sentar una base sólida para crear aplicaciones distribuidas modernas. Ya sea que cree una plataforma de transmisión de datos en tiempo real, un sistema de recopilación de registros o una arquitectura basada en eventos, Kafka es una solución confiable y eficiente.

Supongo que te gusta

Origin blog.csdn.net/weixin_42279822/article/details/132206109
Recomendado
Clasificación