¡Bienvenido a Kafkaland!

Publicado el

(Bartha Bela Tibor) (19 de junio de 2020)

Intro

Si alguna vez trabajó con cola de mensajes o plataformas de transmisión, Kafka es uno que debe verificar. Su mejor uso es para la transmisión de datos en tiempo real.

En caso de que esté considerando Kafka para su aplicación, Kafka es mejor para los siguientes casos de uso:

  • Pub / Submensajería
  • Procesamiento de flujo
  • Almacenamiento de datos

En primer lugar, antes de tocar Kafka, uno debe saber lo siguiente: Kafka es increíblemente rápido, tiene una enorme libertad y es fácil equivocarse cuando proviene de otra plataforma de cola de mensajes.

En este artículo nos centraremos en hacer las cosas bien con Kafka.

Clave Conceptos:

  • mensaje : unidad de datos
  • tema : canal de datos
  • partición : los temas pueden tener más particiones
  • desplazamiento : posición de un mensaje en una partición
  • productor : permite que una aplicación publique datos en un tema determinado
  • consumidor : la aplicación puede consumir datos de uno o más temas. Un tema puede tener varios consumidores. Los consumidores pueden suscribirse a cualquier número de particiones de un tema.
  • grupos de consumidores : los consumidores pueden organizarse en grupos de consumidores, que están leyendo de un tema, en paralelo cuando leen de diferentes particiones
  • broker : administra el almacenamiento de temas
  • cluster : múltiples corredores, que contiene varios corredores
  • líder / réplica : cada corredor contiene un número de particiones de un tema, cada uno de estos puede ser un líder o una réplica. Todas las escrituras y lecturas de un tema se realizan en el líder, que coordina la actualización de las réplicas. Si un líder falla, una réplica asume el papel de líder

Puede encontrar más información sobre los conceptos básicos de Kafka aquí .

Conceptos básicos con Node.js

Para esta introducción usaremos Node.js, y crearemos un productor y consumidor básico.

En primer lugar, instalará Kafka localmente como se describe aquí .

Este artículo asume que solo tenemos un corredor.

Los temas se crearán antes de que se ejecute nuestra aplicación, ver más abajo.

En el momento de escribir esta introducción, hay 3 paquetes estables para usar con NodeJS:

  1. Node-rdkafka
  2. KafkaJS
  3. Kafka-node

Todos estos funcionan de manera similar, para la introducción usaremos node-rdkafka ( npm install node-rdkafka )

Suponiendo que ha instalado Kafka localmente con la configuración predeterminada y ha iniciado un intermediario, podemos crear un productor y consumidor simple.

Crea el tema manualmente:

Crea el productor y produce un evento:

Cree el consumidor y los eventos de consumo:

Este es un ejemplo de un consumidor fluido. Consume los eventos que aparecen en el tema. Otra posibilidad es utilizar un consumidor que no fluye, especificando el número de eventos a consumir como parámetro para consumir. Consumir (número). En este caso, obtendremos los mensajes después de tener un número de mensajes no consumidos en el tema.

Confirmaciones

Dado que Kafka fue diseñado para la seguridad ante fallas, los consumidores pueden marcar los mensajes como consumidos: comprometido . De forma predeterminada, node-rdkafka realiza auto-confirmaciones , además, se puede hacer manualmente: consumidor.commit () o consumidor.commitMessage (mensaje) .

En caso de que el consumidor se desconecte, otro consumidor puede continuar desde el mensaje comprometido.

¡Bienvenido a Kafkaland! ¡Disfruta!

Este es el primero de una serie de cuatro artículos. Dará seguimiento a casos específicos de uso de Kafka para: microservicios, chatbots y proyectos fintech. ¡Bien!

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *