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

Apache Kafka (Kafka) es una plataforma de transmisión distribuida de código abierto que permite (entre otras cosas) el desarrollo de aplicaciones impulsadas por eventos en tiempo real. ¿Qué significa esto?

En la actualidad, miles de millones de fuentes de datos generan continuamente flujos de registros de datos, incluidos flujos de eventos. Un evento es un registro digital de una acción que sucedió y la hora en que sucedió. Normalmente, un evento es una acción que impulsa a otra acción como parte de un proceso. Un cliente que hace un pedido, elige un asiento en un vuelo o envía un formulario de registro son todos ejemplos de eventos. Un evento no tiene por qué involucrar a una persona; por ejemplo, el informe de temperatura de un termostato conectado en un momento dado también es un evento.

Estos flujos ofrecen oportunidades para aplicaciones que responden a datos o eventos en tiempo real. Una plataforma de transmisión permite a los desarrolladores crear aplicaciones que consumen y procesan continuamente estas transmisiones a velocidades extremadamente altas, con un alto nivel de fidelidad y precisión en función del orden correcto de aparición.

LinkedIn desarrolló Kafka en 2011 como un intermediario de mensajes de alto rendimiento para su propio uso, posteriormente lo pasó a código abierto y donó Kafka a Apache Software Foundation  (el enlace se encuentra fuera de ibm.com). Hoy en día, Kafka se ha convertido en la plataforma de transmisión más utilizada, capaz de ingerir y procesar billones de registros por día sin ningún retraso perceptible en el rendimiento a medida que aumentan los volúmenes. Algunas organizaciones del índice Fortune 500, como Target, Microsoft, AirBnB y Netflix, confían en Kafka para ofrecer a sus clientes experiencias basadas en datos en tiempo real.

El siguiente video proporciona más información sobre Kafka (9:10):

Cómo funciona Kafka

Kafka tiene tres prestaciones principales:

  1. Permite que las aplicaciones publiquen flujos de datos o eventos o se o se suscriban a ellos.
  2. Almacena registros con precisión (es decir, en el orden en que ocurrieron) de una manera duradera y con tolerancia a errores.
  3. Procesa registros en tiempo real (a medida que ocurren).

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

  • API de productor: Permite que una aplicación publique una transmisión en un tema de Kafka. Un tema es un registro con nombre que almacena los registros en el orden en que ocurrieron, en relación entre ellos. Una vez que se escribe un registro en un tema, no se puede modificar ni eliminar; en cambio, permanece en el tema durante un período de tiempo preconfigurado (por ejemplo, dos días) o hasta que se agota el espacio de almacenamiento.

  • API de consumidor: Permite que una aplicación se suscriba a uno o más temas y que ingiera y procese la transmisión almacenada en el tema. Puede trabajar con registros en el tema en tiempo real o puede ingerir y procesar registros pasados.

  • API de transmisiones: Se basa en las API de productor y consumidor y agrega capacidades de procesamiento complejas que permiten a una aplicación realizar un procesamiento de flujo continuo de adelante hacia atrás, específicamente, para consumir registros de uno o más temas, para analizarlos, agregarlos o transformarlos según sea necesario, y publicar los flujos resultantes sobre los mismos temas u otros temas. Si bien las API de productor y consumidor se pueden usar para un procesamiento de transmisión simple, es la API de transmisiones la que permite el desarrollo de aplicaciones de transmisión de datos y eventos más sofisticadas.

  • API de conector: Permite a los desarrolladores crearconectores, 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 conectores listos para usar para almacenes de datos populares  (el enlace se encuentra fuera de 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 están divididos y replicados de tal manera que pueden escalarse para atender a grandes volúmenes de consumidores simultáneos sin que ello afecte al rendimiento. Como resultado, según Apache.org, "Kafka funcionará igual tanto si tiene 50 KB como 50 TB de almacenamiento persistente en el servidor".

Casos prácticos de Kafka

Kafka se utiliza principalmente para crear dos tipos de aplicaciones:

  • Canalizaciones de datos de transmisión en tiempo real: Aplicaciones diseñadas específicamente para mover millones de datos o registros de eventos entre sistemas empresariales, a escala y en tiempo real, y hacerlo de manera confiable, sin riesgo de daños, duplicación de datos y otros problemas que generalmente ocurren al mover 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 secuencias propias. Si dedica algún tiempo a buscar en línea, encontrará decenas de estas aplicaciones todos los días, desde el sitio de venta minorista 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 del flujo 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í mediante la conversión de protocolos de mensajería entre ellos.

Debido a que Kafka empezó siendo una especie de intermediario de mensajes (y, en teoría, todavía puede usarse como tal) y debido a que RabbitMQ admite un modelo de mensajería de publicación/suscripción (entre otros), Kafka y RabbitMQ a menudo se comparan como soluciones alternativas. Pero las comparaciones no son realmente prácticas y, a menudo entran en un exceso de 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 flujos que permite que las aplicaciones publiquen, consuman y procesen grandes volúmenes de flujos 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 utilizan a menudo con Kafka

Kafka se usa con frecuencia con varias otras tecnologías de Apache como parte de un procesamiento de flujos más grande, una arquitectura impulsada por 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 usar Spark para realizar análisis en transmisiones enviadas por Apache Kafka y para producir aplicaciones de procesamiento de transmisión en tiempo real, como el análisis de flujo de clics mencionado anteriormente.

Apache NiFi
 

Apache NiFi es un sistema de gestión de flujos de datos con una interfaz visual de tipo arrastrar y soltar. Dado que NiFi puede funcionar como productor de Kafka y consumidor de Kafka, es una herramienta idónea para gestionar los retos de flujo de datos que Kafka no puede abordar.

Apache Flink
 

Apache Flink es un motor para realizar cálculos en flujos de eventos a escala, con alta velocidad y baja latencia constantes. Flink puede ingerir transmisiones como consumidor de Kafka, realizar operaciones basadas en estas transmisiones 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 equipos para su uso en análisis de Big Data, aprendizaje automático, minería de datos y otras aplicaciones basadas en datos que procesan datos estructurados y no estructurados. Kafka se utiliza a menudo para crear una canalización de datos de transmisión 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 nube, con confianza.

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

Desde sus flujos de trabajo de negocios hasta sus operaciones de TI, le ayudaremos con 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.

Descubra IBM Cloud Pak for Integration
Dé el siguiente paso

Kafka seguirá siendo parte de la modernización de las aplicaciones, ya que la demanda de mejores experiencias para los clientes y más aplicaciones impacta en las operaciones empresariales y de TI. Cuando se trata de satisfacer tales demandas, también facilita un movimiento hacia una mayor automatización. Al trabajar con IBM, tendrá acceso a funcionalidades de automatización basadas en IA, incluyendo flujos de trabajo preintegrados, para ayudar a acelerar la innovación haciendo que cada proceso sea más inteligente. Descubra más acerca de IBM Event Streams for IBM Cloud, una plataforma de streaming de eventos Kafka como Servicio completamente gestionada que permite crear aplicaciones basadas en eventos en IBM Cloud.

Descubra más acerca de IBM Event Streams