[Big Data] Guía de introducción a Kafka

1. Introducción a Kafka

Apache Kafka es una plataforma de procesamiento de flujo distribuido de alto rendimiento desarrollada por LinkedIn y de código abierto en 2011. Tiene las características de alta escalabilidad , alta confiabilidad y baja latencia , por lo que es muy popular en escenarios de procesamiento de datos a gran escala. Kafka puede procesar varios tipos de datos, como eventos, registros, indicadores, etc., y se usa ampliamente en el procesamiento, recopilación, monitoreo y análisis de flujos de datos en tiempo real .

Generalmente se usa para colas de mensajes y procesamiento de flujo. Cuando se usa como cola de mensajes, los productos de la competencia incluyen RabbitMQ,,,, etc.ActiveMQRocketMQApache Pulsar

2.Arquitectura Kafka

A continuación se presentan los tres participantes más importantes en la arquitectura Kafka:

  • Producer( Productor ): el productor es responsable de enviar mensajes al clúster de Kafka.
  • Consumer( Consumidor ): el consumidor es responsable de extraer y consumir mensajes del clúster de Kafka.
  • Broker( Nodo de agente ): el corredor es un nodo de agente de servicio en el clúster de Kafka y puede considerarse como un servidor. Los clústeres de Kafka suelen constar de varios corredores para lograr el equilibrio de carga y la tolerancia a fallos.

Insertar descripción de la imagen aquí

3. Particiones y copias

Kafka introduce el concepto de Topic( tema ) para clasificar mensajes. Cuando el productor envía un mensaje, necesita especificar un tema al que enviar, y luego el suscriptor del mensaje se suscribe a este tema y consume el mensaje.

Para mejorar el rendimiento, Kafka introdujo el concepto de Partition( partición ) sobre la base de Topic. El tema es un concepto lógico, mientras que la partición es una agrupación física. Un tema puede contener varias particiones. Cuando un productor envía un mensaje, debe especificar una partición que se enviará a un tema, y ​​luego el remitente del mensaje se suscribe a este tema y consume los mensajes en esta partición.

Para mejorar el rendimiento y la escalabilidad del sistema, Kafka coloca diferentes particiones de un tema en múltiples nodos de Broker para aprovechar al máximo los recursos de la máquina y facilitar la expansión de las particiones.

ReplicaPara garantizar la seguridad de los datos y la alta disponibilidad de los servicios, Kafka introduce el concepto de ( réplica ) sobre la base de Partición . Una partición contiene múltiples réplicas. La relación entre réplicas es un maestro y muchos esclavos. Hay dos tipos Leader Replica( réplica líder ) y Follower Replica( réplica seguidora ). Las réplicas se distribuyen en diferentes nodos Broker.

Leader Replica es responsable de las solicitudes de lectura y escritura, y Follower Replica solo es responsable de sincronizar los datos de Leader Replica y no proporciona servicios externos. Cuando la réplica líder falla, se elige una nueva réplica líder de la réplica seguidora para continuar brindando servicios externos, realizando una conmutación por error automática.

La siguiente figura muestra la distribución de diferentes Particiones del mismo Tema en el nodo Broker:

Insertar descripción de la imagen aquí
Para mejorar la eficiencia de sincronización y la eficiencia de escritura de datos de Replica, Kafka clasifica Replica. Todos los conjuntos de réplicas para una partición se denominan colectivamente ( réplicasAR asignadas ), incluidas la réplica líder y la réplica seguidora. El conjunto de réplicas que se mantiene sincronizado con la réplica líder se llama ( , una copia sincronizada ) y el conjunto de réplicas que no está sincronizado con la réplica líder se llama ( , una copia que no está sincronizada ) .Assigned ReplicasISRIn-Sync ReplicasOSROut-of-Sync ReplicasAR = ISR + OSR

Antes de que la réplica líder escriba el mensaje en el disco, debe esperar a que se sincronicen todas las réplicas en el ISR. Si los datos de sincronización de una réplica seguidora en el ISR van demasiado por detrás de la réplica líder, se transferirán al OSR. Si los datos de sincronización de una réplica de seguidor en el OSR alcanzan los de la réplica de líder, se transferirán al ISR. Cuando la Réplica del Líder falla, solo se elegirá una nueva Réplica del Líder del ISR.

4.Compensación

Para registrar el estado de sincronización de la réplica y controlar el rango de mensajes de consumo del consumidor, Kafka introduce LEO( Log End Offset, desplazamiento final del registro ) y HW( High Watermark, marca de límite superior ).

  • LEO representa el desplazamiento del siguiente mensaje escrito en la partición y también es el desplazamiento máximo en la partición. LEO se utiliza para registrar el progreso de la sincronización de datos entre la réplica líder y la réplica seguidora, con una copia en cada réplica.
  • HW representa el desplazamiento mínimo en el que todas las réplicas (líder y seguidor) se han replicado correctamente y es un valor de datos compartido por todas las réplicas. En otras palabras, los mensajes anteriores a HW se consideran comprometidos y los consumidores pueden consumir estos mensajes. Se utiliza para garantizar la coherencia del mensaje y leerlo solo una vez.

A continuación se demuestra el proceso de actualización de LEO y HW:

(1) En el estado inicial, hay dos mensajes, 0 y 1, en cada una de las tres copias, LEO es 2 y la posición 2 está vacía, lo que indica que es la posición donde se escribirá el mensaje. HW también es 2, lo que indica que todos los mensajes en la réplica líder se han sincronizado con la réplica seguidora y los consumidores pueden consumir dos mensajes, 0 y 1.

Insertar descripción de la imagen aquí
(2) El productor envía dos mensajes a la Réplica del Líder. En este momento, el valor LEO de la Réplica del Líder aumenta en 2 y se convierte en 4. Dado que la sincronización de mensajes con la réplica de seguidor aún no ha comenzado, el valor HW y el valor LEO en la réplica de seguidor no han cambiado. Porque los consumidores solo pueden consumir mensajes antes de HW, es decir, dos mensajes 0 y 1.

Insertar descripción de la imagen aquí
(3) La réplica líder comienza a sincronizar mensajes con la réplica de seguidor y la tasa de sincronización es diferente: el seguidor1 ha sincronizado dos mensajes 2 y 3, mientras que el seguidor2 solo ha sincronizado un mensaje 2. En este momento, LEO de Líder y Seguidor1 son 4, y LEO de Seguidor2 es 3, HW indica el desplazamiento mínimo que se ha sincronizado con éxito y el valor es 3, lo que significa que el consumidor solo puede leer 0, 1 , 2 y tres en este momento información.

Insertar descripción de la imagen aquí
Todos los mensajes se completan sincrónicamente: el LEO de las tres réplicas es 4 y el HW también es 4. El consumidor puede leer cuatro mensajes: 0, 1, 2 y 3.

Insertar descripción de la imagen aquí

5. Grupo de Consumidores

Para mejorar la eficiencia del procesamiento de mensajes, Kafka introduce el concepto de grupos de consumidores. Un grupo de consumidores ( Consumer Group) contiene varios consumidores, un grupo de consumidores puede suscribirse a varios temas al mismo tiempo y varios grupos de consumidores también pueden suscribir un tema al mismo tiempo.

Para garantizar que los mensajes de la misma partición se procesen secuencialmente, para un grupo de consumidores, los mensajes de una partición solo se entregarán a un consumidor del grupo de mensajes para su procesamiento.

Insertar descripción de la imagen aquí

6. Resumen

Este artículo presenta brevemente la arquitectura Kafka, así como algunos conceptos sustantivos involucrados en la arquitectura, incluidos Producer(productor), Consumer(consumidor), Broker(nodo agente), Topic(tema), Partition(partición), Leader Replica(copia líder), Follower Replica(réplica de seguidor). , LEO( Log End Offset, desplazamiento final del registro), HW( High Watermark, marca de límite superior), Consumer Group(grupo de consumidores), etc. El próximo artículo presentará cómo Kafka resuelve la pérdida de mensajes, el consumo repetido, los mensajes secuenciales, los mensajes persistentes, el proceso de elección de líder, etc.

Supongo que te gusta

Origin blog.csdn.net/be_racle/article/details/132818337
Recomendado
Clasificación