Apache Kafka

Definición de Kafka

Akafka logopache Kafka es un sistema de intermediación de mensajes basado en el modelo publicador/suscriptor.

Se considera un sistema persistente, escalable, replicado y tolerante a fallos. A estas características se añade la velocidad de lecturas y escrituras que lo convierten en una herramienta excelente para comunicaciones en tiempo real (streaming).

Proporciona multitud de conectores que le hacen conectarse a casi cualquier fuente de datos, como conectores para ActiveMQ, IBM MQ, JDBC, JMS, Replicator, …

También proporciona multitud de conectores que le hacen almacenar los datos en cualquier sitio, como conectores para HDFS, Amazon S3, Elasticsearch, JDBC, …

 

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

 

Arquitectura

Arquitectura Kafka

Arquitectura Kafka

 

Topic (tema): Categorías en las que clasificar los mensajes enviados a Kafka.

Producer (productor) Clientes conectados responsables de publicar los mensajes. Estos mensajes son publicados sobre uno o varios topics.

Consumer (consumidor) Clientes conectados suscritos a uno o varios topics encargados de consumir los mensajes.

Broker (nodos): Nodos que forman el cluster.

 

Ejemplos

 

Comparativa con otros sistemas como Flume y RabbitMQ

Autor: Diego Calvo