Apache Kafka
Conozca Apache Kafka, la tecnología de streaming de código abierto en la que se basan algunas de las experiencias de usuario en tiempo real y basadas en eventos más populares de la Web, como AirBnB, Netflix y Pinterest
imagen abstracta negra y azul
¿Qué es Apache Kafka?

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):

Cómo funciona Kafka

Kafka consta de tres prestaciones principales:

  1. Permite que las aplicaciones publiquen secuencias de datos o eventos o se suscriban a ellas.
  2. Almacena registros con precisión (es decir, en el orden en el que se han producido) de forma duradera y con tolerancia a errores.
  3. Procesa registros en tiempo real (tal como se producen).

Los desarrolladores pueden aprovechar estas prestaciones de Kafka a través de cuatro API:

  • Producer API: permite que una aplicación publique una secuencia en un tema de Kafka. Un tema es un registro con nombre que almacena los registros en el orden en que se han producido, en relación entre ellos. Una vez que se escribe un registro en un tema, no se puede modificar ni eliminar, sino que permanece en el tema durante una cantidad de tiempo preconfigurada —por ejemplo, durante dos días— o hasta que se agote el espacio de almacenamiento.
  • Consumer API: permite que una aplicación se suscriba a uno o más temas y que ingiera y procese la secuencia almacenada en el tema. Puede trabajar con registros en el tema en tiempo real, o puede ingerir y procesar registros pasados.
  • Streams API: se basa en Producer API y Consumer API y agrega prestaciones complejas de procesamiento, que permiten a una aplicación realizar un procesamiento continuo de secuencias de adelante hacia atrás, específicamente, para consumir registros de uno o más temas, analizarlos, agregarlos o transformarlos según sea necesario y, finalmente, publicar las secuencias resultantes en los mismos temas u otros. Aunque Producer API y Consumer API se pueden usar para un procesamiento de transmisión simple, es Streams API la que permite el desarrollo de aplicaciones de transmisión de datos y eventos más sofisticadas.
  • Connector API: permite a los desarrolladores crear conectores, que son productores o consumidores reutilizables que simplifican y automatizan la integración de una fuente de datos en un clúster de Kafka. Eche un vistazo a algunos de los conectores listos para su uso para almacenes de datos populares (enlace externo a ibm.com).
Rendimiento de Kafka

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".

Casos de uso de Kafka

Kafka se usa principalmente para crear dos tipos de aplicaciones:

  • Conductos de datos en streaming en tiempo real: aplicaciones diseñadas específicamente para mover millones y millones de datos o registros de eventos entre los sistemas de la empresa —a escala y en tiempo real — y que el movimiento sea fiable, sin riesgo de corrupción, duplicación de datos y otros problemas que suelen ocurrir cuando se mueven volúmenes tan grandes de datos a altas velocidades.
  • Aplicaciones de transmisión en tiempo real: aplicaciones impulsadas por secuencias de eventos o registros y que generan sus propias secuencias. Si navega un rato en línea, encontrará decenas de estas aplicaciones a diario, desde el sitio de un comercio que actualiza continuamente la cantidad de un producto en su tienda local, hasta sitios que muestran recomendaciones personalizadas o publicidad basada en el análisis de la secuencia de clics.
Kafka frente a RabbitMQ

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 es una plataforma de procesamiento de secuencias que permite a las aplicaciones publicar, consumir y procesar elevados volúmenes de secuencias de registros de forma rápida y duradera, y
  • RabbitMQ es un intermediario de mensajes que permite que las aplicaciones que utilizan diferentes protocolos de mensajería intercambien mensajes entre sí.
Tecnologías de Apache que se suelen usar con Kafka

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

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

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

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

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.

Soluciones relacionadas
Servicios de modernización de aplicaciones

Cree, modernice y gestione aplicaciones de forma segura en cualquier cloud, con confianza.

Explore los servicios de consultoría de modernización de aplicaciones
Automatización basada en IA

Desde sus flujos de trabajo de negocio hasta sus operaciones de TI, le ayudamos con la automatización basada en IA.

Explore la automatización basada en IA
IBM Cloud Pak for Integration

Conecte aplicaciones, servicios y datos con IBM Cloud Pak for Integration, la plataforma de integración más completa del mercado.

Explore IBM Cloud Pak for Integration
Dé el siguiente paso

Kafka seguirá interviniendo en la modernización de aplicaciones mientras la demanda de mejores experiencias del cliente y más aplicaciones incida sobre las operaciones de negocio y TI. Para satisfacer tales demandas, sería útil apostar por una mayor automatización. Al colaborar con IBM, tendrá acceso a prestaciones de automatización basadas en IA, que incluyen flujos de trabajo predefinidos, para acelerar la innovación haciendo que todos los procesos sean más inteligentes. Obtenga información sobre IBM Event Streams for IBM Cloud, una plataforma de transmisión de eventos Kafka como servicio completamente gestionada, que le permite crear aplicaciones basadas en eventos en IBM Cloud.

Más información sobre IBM Event Streams