Apache Kafka es un sistema de
mensajería de código abierto que proporciona un mecanismo para la transmisión
de datos en tiempo real. Fue desarrollado por LinkedIn y se ha convertido en un
estándar en el campo del Big Data.
Kafka es un sistema de cola de mensajes
distribuido que permite el almacenamiento y procesamiento de grandes volúmenes
de datos en tiempo real. Es altamente escalable y tolerante a fallos, y permite
el procesamiento de datos en tiempo real mediante el uso de un sistema de
topologías.
Kafka se utiliza en una variedad
de industrias, como la publicidad, el análisis de datos de negocios, la
atención médica y la seguridad informática, para procesar y analizar grandes
volúmenes de datos en tiempo real y obtener información valiosa para la toma de
decisiones. Además, Kafka se integra con otros proyectos y tecnologías de Big
Data como Hadoop, Storm y Cassandra para proporcionar una solución completa de
procesamiento de datos en tiempo real.
¿Cómo funciona?
Apache Kafka divide cada topics
(mensaje) en particiones. Cada partición es una secuencia ordenada de mensajes
y cada partición es consumida por un único consumidor. Aunque se consuma la
partición no se subtrae por el consumidor.
A cada topic se le puede definir
un número de particiones, en función del numero de servidores y de conexiones
que vayamos a tener. Esto aumenta considerablemente la disponibilidad.
Cada topic tiene un offset para
que cada consumidor indique que mensaje quiere que se le devuelva. A mayor
número de particiones más tardará el productor (escribe mensajes) en guardar el
mensaje, pero tardará menos el consumidor (lee mensajes) en recuperarlo. La
idea está pensada para procesamiento en paralelo.
Cada mensaje publicado en un
topic se entrega a una instancia de consumidor dentro de cada grupo de
consumidores suscriptores.
Apache Kafka se distribuye junto
con Zookeeper para su instalación. Cuando solicitas un mensaje no te conectas a
Kafka sino a Zookeeper. Zookeeper es una forma muy cómoda de escalar
horizontalmente.
Zookeeper está compuesto por
brokers que actúan como líder de una o mas particiones, el líder es activo y el
seguidor pasivo.
Características
- Desarrollado
en Scala.
- Dispone
de conectores para la integración con JMS, sistema de archivos,
Hadoop(HDFS), HBase, FTP, JDBC, MongoDB, assandra, API REST,…
- Permite
la implementación de productores/consumidores en diferentes
lenguajes: Java, Scala, Python, Ruby, C++,…
- Utiliza
un protocolo propio agnóstico que va sobre http.
- Utiliza
Apache Zookeeper para almacenar el estado de los nodos,
que mantiene un conjunto de particiones de cada topic.
- Permite
ingestar grandes volumenes de datos, entrono a 100k eventos/seg.
- Buen
rendimiento ente latencias bajas.
- Permite escalamiento
horizontal.
- Diferentes
grupos de consumidores pueden consumir mensajes a diferente ritmo.
- Actúa
de amortiguador entre productores y consumidores, ideal para
absorber picos de carga.
- Software
de código abierto que se distribuye bajo licencia Apache
2.0
Publicar un comentario