Apache Kafka (Kafka) es una plataforma de transmisión (streaming) distribuida de código abierto que permite, entre otras cosas, el desarrollo de aplicaciones basadas en eventos en tiempo real. ¿Qué significa esto?
Actualmente, miles de millones de fuentes de datos generan continuamente secuencias de registros de datos, incluidas secuencias de eventos. Un evento es un registro digital de una acción que ha sucedido y de la hora a la que ha sucedido. Por lo general, un evento es una acción que genera otra acción como parte de un proceso. Un cliente que realiza un pedido, elige un asiento en un vuelo o envía un formulario de registro son ejemplos de eventos. En un evento no tiene por qué participar una persona; por ejemplo, que un termostato conectado informe de la temperatura en un momento dado también es un evento.
Estas secuencias ofrecen oportunidades para aplicaciones que responden a datos o eventos en tiempo real. Una plataforma de streaming permite a los desarrolladores crear aplicaciones que consumen y procesan estas secuencias de forma continua a velocidades muy elevadas, con un alto nivel de fidelidad y precisión en función del orden correcto de aparición.
LinkedIn desarrolló Kafka en 2011 como intermediario de mensajes de alto rendimiento para su propio uso, posteriormente lo pasó a código abierto y donó Kafka a la Apache Software Foundation (enlace externo a ibm.com). Actualmente, Kafka se ha convertido en la plataforma de streaming más utilizada, capaz de ingerir y procesar billones de registros al día, sin ningún retraso perceptible en el rendimiento a medida que aumentan los volúmenes. Hay varias organizaciones de la lista Fortune 500, como Target, Microsoft, AirBnB y Netflix que confían en Kafka para proporcionar a sus clientes experiencias basadas en datos en tiempo real.
El siguiente vídeo ofrece más información sobre Kafka (9:10):
Kafka consta de tres prestaciones principales:
Los desarrolladores pueden aprovechar estas prestaciones de Kafka a través de cuatro API:
Kafka es una plataforma distribuida: se ejecuta como un clúster tolerante a errores y de alta disponibilidad que puede abarcar varios servidores e incluso varios centros de datos. Los temas de Kafka se dividen y replican de tal manera que se pueden escalar para atender los elevados volúmenes de consumidores simultáneos sin afectar al rendimiento. Como resultado, según Apache .org, "Kafka se ejecutará igual tanto si tiene 50 KB de almacenamiento persistente en el servidor como si son 50 TB".
Kafka se usa principalmente para crear dos tipos de aplicaciones:
RabbitMQ es un intermediario de mensajes de código abierto muy popular, un tipo de middleware que permite que las aplicaciones, los sistemas y los servicios se comuniquen entre sí traduciendo los protocolos de mensajería entre ellos.
Como Kafka comenzó como una especie de intermediario de mensajes (y, en teoría, aún puede usarse como tal) y como RabbitMQ admite un modelo de mensajería de publicación/suscripción (entre otros), Kafka y RabbitMQ a menudo se comparan como soluciones alternativas. Sin embargo, las comparaciones no son prácticas en realidad, y suelen entrar en detalles técnicos que no son relevantes a la hora de elegir entre las dos opciones. Por ejemplo, que los temas de Kafka pueden tener varios suscriptores, mientras que cada mensaje de RabbitMQ solo puede tener uno; o que los temas de Kafka son duraderos, mientras que los mensajes de RabbitMQ se eliminan una vez consumidos.
La conclusión es la siguiente:
Kafka con frecuencia se utiliza con varias otras tecnologías de Apache como parte de un procesamiento de secuencias mayor, una arquitectura basada en eventos o una solución de análisis de big data.
Apache Spark es un motor de análisis para el procesamiento de datos a gran escala. Puede utilizar Spark para realizar análisis en secuencias enviadas por Apache Kafka y para producir aplicaciones de procesamiento de secuencias en tiempo real, como el análisis de secuencias de clics mencionado anteriormente.
Apache NiFi es un sistema de gestión de flujos de datos con una interfaz visual de arrastrar y soltar. Como NiFi puede ejecutarse como productor y como consumidor de Kafka, es una herramienta ideal para gestionar los desafíos de flujo de datos que Kafka no puede abordar.
Apache Flink es un motor para realizar cálculos en secuencias de eventos a escala, con alta velocidad y baja latencia constantes. Flink puede ingerir secuencias como consumidor de Kafka, realizar operaciones basadas en estas secuencias en tiempo real y publicar los resultados en Kafka o en otra aplicación.
Apache Hadoop es un marco de software distribuido que le permite almacenar cantidades masivas de datos en un clúster de ordenadores para su uso en análisis de big data, machine learning, minería de datos y otras aplicaciones basadas en datos que procesan datos estructurados y no estructurados. Kafka se suele utilizar para crear un conducto de datos en streaming en tiempo real a un clúster de Hadoop.
Cree, modernice y gestione aplicaciones de forma segura en cualquier cloud, con confianza.
Desde sus flujos de trabajo de negocio hasta sus operaciones de TI, le ayudamos con la automatización basada en IA.
Conecte aplicaciones, servicios y datos con IBM Cloud Pak for Integration, la plataforma de integración más completa del mercado.