Apache Kafka


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

Post a Comment (0)

Artículo Anterior Artículo Siguiente