¿Qué es Apache Kafka?

Ha pasado más de 10 años desde que publicamos nuestro primer post sobre Kafka (https://unpocodejava.com/2012/12/21/un-poco-de-kafka/) actualizado luego en 2013 (https://unpocodejava.com/2013/07/10/un-poco-mas-de-kafka-version-0-8/)

Con tanto tiempo, parece adecuado empezar de 0….

Introducción a Kafka

A continuación, se presentan algunos puntos que describen Apache Kafka:

  • Kafka es un almacén de eventos distribuido y una plataforma de procesamiento de Streams de eventos.
  • Kafka es de código abierto y está escrito en Java.
  • El objetivo principal al diseñar Kafka es manejar datos en tiempo real y proporcionar una plataforma de alto rendimiento y baja latencia.
  • Kafka es una plataforma de Streams de eventos que tiene muchas capacidades para publicar (escribir) y suscribirse a (leer) flujos de eventos de un sistema diferente.
  • Además, para almacenar y procesar eventos de forma duradera todo el tiempo que queramos, por defecto, Kafka almacena los eventos
  • Kafka es un sistema distribuido, que cuenta con servidores y clientes que se comunican a través de TCP.
  • Puede desplegarse en diferentes máquinas virtuales y contenedores en entornos locales y en la nube según las necesidades.
  • En el mundo Kafka, un productor envía mensajes al Broker Kafka. Los mensajes se almacenan dentro de los tópicos y el consumidor se suscribe a ese tópico para consumir los mensajes enviados por el productor.
  • ZooKeeper se utiliza para gestionar los metadatos relacionados con Kafka, realiza un seguimiento de los brokers que forman parte del clúster Kafka y las particiones de los diferentes tópicos. Por último, gestiona el estado de los nodos Kafka y mantiene una lista de tópicos y mensajes Kafka.

Principales conceptos de Kafka

  • Evento: Un evento o registro es el mensaje que leemos y escribimos en el servidor Kafka; lo hacemos en forma de eventos, y contiene una clave, un valor, una marca de tiempo y otras cabeceras de metadatos
  • Productor: es una aplicación cliente que envía mensajes al nodo o broker Kafka.
  • Consumidor es una aplicación que recibe datos de Kafka.
  • Clúster Kafka es el conjunto de procesos Kafka que comparten la carga de trabajo entre sí con distintos fines.
  • Broker es un servidor Kafka que actúa como agente entre el productor y el consumidor, que se comunican a través del broker.
  • Tópico: Los eventos se almacenan dentro del "topic" (al estilo de una carpeta con ficheros). Cada tópico tiene uno o más productores y consumidores, que escriben y leen datos del tópico. Los eventos en el tópico pueden ser leídos tantas veces como sea necesario porque persiste los eventos (Kafka no es como otro sistema de mensajería que elimina los mensajes después de consumirlos).
  • Particiones: Los tópicos están particionados, lo que significa que el tópico está repartido en múltiples particiones que creamos dentro del tópico. Cuando el productor envía algún evento al tópico, lo almacenará dentro de las particiones particulares, y entonces, el consumidor puede leer el evento desde la partición del tópico correspondiente en secuencia.
  • Offset: Kafka asigna un ID único a un mensaje almacenado dentro de la partición del tópico cuando el mensaje llega desde el productor.
  • Grupos de consumidores: en el mundo Kafka, el grupo de consumidores actúa como una única unidad lógica.
  • Réplica: en Kafka, para hacer los datos tolerantes a fallos y altamente disponibles, podemos replicar tópicos en diferentes regiones y brokers.

APIs Kafka

Kafka cuenta con 5 APIs básicas que sirven para diferentes propósitos:

  • Admin API: Esta API gestiona los diferentes tópicos, brokers y objetos Kafka.
  • Producer API: Esta API se utiliza para escribir/publicar eventos en diferentes tópicos de Kafka.
  • Consumer API: Esta API se utiliza para recibir los diferentes mensajes correspondientes a los tópicos suscritos por el consumidor.
  • Kafka Stream API: Esta API se utiliza para realizar diferentes tipos de operaciones como ventanas temporales, uniones, agregación y muchas otras.
  • Kafka Connect API: Esta API funciona como un conector a Kafka, que ayuda a diferentes sistemas a conectarse con Kafka fácilmente. Tiene diferentes tipos de conectores listos para usar relacionados con Kafka.

Deja una respuesta

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Salir /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Salir /  Cambiar )

Conectando a %s