Kafka

Kafka es una plataforma de transmisión de datos (data streaming)...

en tiempo real que sirve para construir aplicaciones distribuidas dado que puede correr en muchos servidores. Su funcionamiento se asemeja a un sistema de mensajería donde una aplicación publica mensajes, se almacenan y se entrega a otro cliente. 

Comúnmente se utiliza en aplicaciones que generan un gran volumen de datos para alimentar a otros sistemas que la procesan como Hadoop y Spark. Algunos casos de usos concretos son:

Métricas de usuarios

Recolectar métricas como la cantidad de usuarios que hay en línea a cierta hora/minuto para que otro sistema genere estadísticas.

Rastrear actividades web

Rastrear actividad web, por ejemplo, se puede almacenar qué páginas han visto y que búsquedas han realizado los usuarios para que otra aplicación pueda recomendarle productos, enviando esa información de regreso por medio de mensajes kafka.

Sistema de bitácora

Un sistema de bitácora descentralizada que guarde información de errores y advertencias por actividad inusual usada por varios microservicios.

Mensajes entre software

Comunicación asincrónica por medio de mensajes entre varios software

Entre sus características que lo hacen ideal para este tipo de aplicaciones están:

Fiabilidad

Puede colocarse varios servidores Kafka y se puede replicar los mensajes entre ellos fácilmente.

Rendimiento

Su arquitectura de baja latencia de escritura/lectura permite manejar miles de mensajes bastante rápido.

Escalabilidad

Se pueden ir agregando otros servidores Kafka a como vayan creciendo las aplicaciones que lo utilizan.

Soporte

Tiene clientes en los lenguajes de programación más populares como C#, Java, Python, entre otros.