Blogia
MAURICIO DURAN TORRES

Apache Kafka - Conceptos Básicos

Introducción

Hola, dentro de todo el stack tecnológico que estamos visibilizando en un mercado cada vez más cloud, cada vez más transaccional, cada vez más escalable, siempre hay que focalizar en qué cosas  y herramientas de gestión, de toma de decisiones o de análisis debemos comenzar a abordar.

Hoy quiero comentar de Apache Kafka, la pregunta es, ¿En qué iniciativa puedo abordar?.

Ej:

Estas en una organización que tiene muchos sistemas satélites, es decir, otros sistemas de dinstinta índole, tecnología, dependencia, performance, etc. En un proyecto requieren que sistema "A", pueda comunicar "notificaciones" en tiempo real o programadas, por ejemplo "notificaciones de alta, baja, modificación" de un "cliente". Entonces el sistema "B" escucha esta información y lo procesa en sus tablas para generar coherencia entre todo el ecosistema digital de la empresa, entonces así, todos los sistemas restantes pueden escuchar qué está pasando y darse por enterado.

 

Kafka:

Apache Kafka is an open-source distributed event streaming platform used by thousands of companies for high-performance data pipelines, streaming analytics, data integration, and mission-critical applications.

Conceptos Claves:

Mucha de la teoria está en la  misma página del proyecto:

Apache Kafka Docs

 

Conceptos Básicos:


EVENT:

Un evento registra el hecho de que "algo sucedió" en el mundo o en su empresa. También se denomina registro o mensaje en la documentación. Cuando se leen o escriben datos en Kafka, se hace en forma de eventos. Conceptualmente, un evento tiene una clave, un valor, una marca de tiempo y cabeceras de metadatos opcionales. Este es un ejemplo de evento:

  • Event key: "Alice"
  • Event value: "Made a payment of $200 to Bob"
  • Event timestamp: "Jun. 25, 2020 at 2:06 p.m."

PRODUCER:

Los productores son aquellas aplicaciones cliente que publican (escriben) eventos en Kafka, y los consumidores son aquellos que se suscriben (leen y procesan) estos eventos. En Kafka, los productores y los consumidores están totalmente desacoplados y son agnósticos entre sí, lo cual es un elemento de diseño clave para lograr la alta escalabilidad por la que es conocido Kafka. Por ejemplo, los productores nunca tienen que esperar a los consumidores. Kafka ofrece varias garantías, como la capacidad de procesar eventos exactamente una vez.

TOPICS:

Los eventos se organizan y almacenan de forma duradera en topicos. De forma muy simplificada, un topico es similar a una carpeta en un sistema de archivos, y los eventos son los archivos de esa carpeta. Un ejemplo de nombre de tema podría ser "pagos". Los topicos en Kafka son siempre multi-productores y multi-suscriptores: un topico puede tener cero, uno o muchos productores que escriben eventos en él, así como cero, uno o muchos consumidores que se suscriben a estos eventos. Los eventos de un topico pueden leerse tantas veces como sea necesario; a diferencia de los sistemas de mensajería tradicionales, los eventos no se eliminan tras su consumo. En su lugar, se define el tiempo que Kafka debe retener sus eventos a través de un ajuste de configuración por topico , después del cual los eventos antiguos serán descartados. El rendimiento de Kafka es efectivamente constante con respecto al tamaño de los datos, por lo que el almacenamiento de datos durante mucho tiempo está perfectamente bien.

 


Broker: 

Un servidor de Kafka esconocido como un Broker, un cluster de Kafka consiste en múltiples brokers.

Mensaje:

Un mensaje es una unidad de datos en Kafka, está compuesto por una llave (key) y un valor (value)

Topics / Partitions / Offsets:

Un topic es un stream (flujo) de mensajes, cada topic se compone de una o más particiones. Los mensajes son colocados en las particiones y son ordenaos de acuerdo a un número llamado offset.

Tener múltiples particiones permite tener más consumidores de mensajes funcionando de forma concurrente, esto de ve reflejado en el incremento del throughput (tasa de transferencia)

Creando Un Topic:

Los mensajes se procesan en tipics, para crear uno deberás ejecutar el siguiente comando:

$bin/kafka-topics.sh --bootstrap-server localhost:9092 --create --topic devs4j-topic --partitions 5 --replication-factor 1

Crear un Producer:

Para iniciar un producer ejecutamos el siguiente comando:

$bin/kafka-console.producer.sh --topic dev4j-topic --bootstrap-server localhost:9092

Crear un Consumer

Para iniciar un consumer ejecutamos el siguiente comando:

$bin/kafka-console.consumer.sh --topic dev4j-topic --from-beginning --bootstrap-server localhost:9092 --property print key=true --property key separator="-"

0 comentarios