Compartir tecnología

Deducción del diagrama del marco básico de Kafka

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

1. Modelo de punto único

1. Concepto sustantivo

  1. Corredor : se refiere a un nodo en el clúster de Kafka. Un clúster de Kafka consta de varios corredores que trabajan juntos para gestionar el almacenamiento, la transmisión y el consumo de mensajes. El corredor gestiona una o más particiones.

  2. Tema : El productor envía el mensaje al tema especificado y el consumidor se suscribe al tema para obtener el mensaje. El tema en sí es solo una agrupación lógica y no tiene concepto de almacenamiento físico.

  3. Dividir : Es un subconjunto del tema y la unidad básica para almacenar y procesar mensajes en Kafka. Cada tema se puede dividir en varias particiones y cada partición es una secuencia de mensajes ordenada e inmutable.

  4. Réplica: Una partición puede tener varias copias.

  5. Corredor líder: En varias copias de una partición, el intermediario es responsable de procesar todas las solicitudes de lectura y escritura de la partición.

  6. SeguidorBroker: En varias copias de una partición, el intermediario responsable de sincronizar los datos del líder se encuentra en la partición.

Insertar descripción de la imagen aquí

El productor envía el mensaje (registro) a Kafka y el consumidor obtiene los datos a través del desplazamiento (desplazamiento, similar a un subíndice de matriz).

Al mismo tiempo, cada partición tendrá su propio archivo de registro. Kafka utiliza archivos de registro para guardar datos en el disco.

2. Expansión horizontal distribuida del clúster

1. Tema de múltiples particiones

Insertar descripción de la imagen aquí

Sobre la producción

Los productores se conectan al clúster de Kafka a través de Bootstrap Broker. Este paso es para establecer la conexión inicial y obtener los metadatos del clúster.

Una vez que el productor obtiene estos metadatos, sabe quién es el intermediario líder para cada partición y, por lo tanto, puede enviar mensajes directamente al intermediario líder correcto.

El productor debe especificar un tema al enviar un mensaje, pero la partición es opcional.

  • No se ha especificado ninguna partición : Si el productor no especifica particiones manualmente, Kafka distribuirá mensajes a las particiones de acuerdo con la estrategia de partición predeterminada. La estrategia de partición predeterminada es la siguiente:
    • Si el mensaje tiene una clave, Kafka determinará la partición en función del valor hash de la clave. Siempre se asigna la misma clave a la misma partición.
    • Si el mensaje no tiene una clave, Kafka utilizará sondeo o distribución aleatoria del mensaje a la partición para garantizar que el mensaje se distribuya uniformemente.
  • Especificar partición : Los productores también pueden especificar particiones explícitamente al enviar mensajes. De esta forma, los mensajes se envían directamente a la partición especificada.

En Kafka, cuando un productor envía un mensaje a un corredor, la primera operación del corredor es grabar el mensaje en el disco para garantizar la persistencia y confiabilidad del mensaje.

Sobre el consumo

Los consumidores en Kafka suelen pertenecer a un grupo de consumidores. Cada grupo de consumidores tiene una identificación de grupo única. El concepto de grupos de consumidores se utiliza para lograr el equilibrio de carga y el consumo paralelo de mensajes.

Cuando varios consumidores pertenecen al mismo grupo, Kafka asignará la partición de tema a los consumidores del grupo.Cada partición solo puede ser consumida por un consumidor dentro del grupo., que puede lograr el equilibrio de carga.

  • Un único consumidor se suscribe a un tema

    • Si solo un consumidor se suscribe a un tema, recibirá todos los mensajes del tema.
  • Varios consumidores pertenecen al mismo grupo.

    • Las particiones de un tema se distribuyen entre los consumidores del grupo. Cada partición solo será consumida por un consumidor del grupo.
    • Si el número de consumidores excede el número de particiones, los consumidores excedentes no se asignarán a ninguna partición y permanecerán inactivos. Estos consumidores pueden hacerse cargo automáticamente de sus particiones cuando otros consumidores salen, logrando así una alta disponibilidad.
    • Si el número de consumidores es menor que el número de particiones, a algunos consumidores se les asignarán varias particiones.
  • Varios consumidores pertenecen a diferentes grupos.

    • Cada grupo consumirá todos los mensajes del tema de forma independiente. Es decir, el mensaje se transmitirá a todos los consumidores del grupo.

Acerca de agregar nuevas particiones

Kafka creará nuevas particiones en el clúster. Estas nuevas particiones se asignarán a diferentes Brokers para lograr un almacenamiento equilibrado y una alta disponibilidad de datos. Kafka no redistribuye ni equilibra automáticamente los datos de las particiones existentes a las nuevas. Las nuevas particiones están vacías desde el momento en que se crean y los datos solo se escribirán en estas nuevas particiones cuando los productores posteriores envíen mensajes. El grupo de consumidores detectará el cambio en el número de particiones y provocará un reequilibrio.

2. Múltiples copias de particiones

Insertar descripción de la imagen aquí

Kafka permite múltiples réplicas (Replica) de cada partición, las cuales se almacenan en diferentes Brokers. Una réplica se llama Líder y es responsable de procesar todas las solicitudes de lectura y escritura. Las otras réplicas son Seguidoras y son responsables de sincronizar los datos del Líder.

Solo una copia de varias copias puede leer y escribir al mismo tiempo, que es la copia líder. Las otras copias se convierten en copias seguidoras y se utilizan como copias de seguridad.