¿Qué es Apache Kafka?

30 de abril de 2025

8 minutos

Autores

Ian Smalley

Senior Editorial Strategist

¿Qué es Apache Kafka?

Apache Kafka es una plataforma de código abierto, distribuida y de transmisión de eventos que procesa datos en tiempo real. Kafka se destaca por dar soporte a aplicaciones impulsadas por eventos y crear pipelines de datos confiables, y ofrecer baja latencia y entrega de datos de alto rendimiento.

Hoy en día, miles de millones de fuentes de datos producen continuamente flujos de información, a menudo en forma de eventos, estructuras de datos fundacionales que registran cualquier ocurrencia en el sistema o entorno. 

Normalmente, un evento es una acción que impulsa 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. Un evento no tiene que involucrar a una persona; por ejemplo, el informe de la temperatura de un termostato conectado en un momento dado también es un evento.

La transmisión de eventos ofrece oportunidades para que las aplicaciones respondan instantáneamente a la nueva información. Las plataformas de transmisión de datos como Apache Kafka permiten a los desarrolladores crear sistemas que consumen, procesan y actúan sobre los datos a medida que llegan, para mantener el orden y la confiabilidad de cada evento.

Kafka se ha convertido en la plataforma de transmisión de eventos más utilizada, capaz de ingerir y procesar billones de registros diariamente sin ningún retraso de rendimiento perceptible para soportar volúmenes escalables. Más del 80 % de las organizaciones Fortune 500 utilizan Kafka, incluidas Target, Microsoft, AirBnB y Netflix, para ofrecer experiencias del cliente en tiempo real basadas en datos.

El origen de Apache Kafka

En 2011, LinkedIn desarrolló Apache Kafka para satisfacer la creciente necesidad de la empresa de un sistema de alto rendimiento y baja latencia, capaz de manejar volúmenes masivos de datos de eventos en tiempo real. Creado con Java y Scala, Kafka fue posteriormente de código abierto y donado a Apache Software Foundation.

Si bien las organizaciones ya admitían o utilizaban sistemas tradicionales de cola de mensajes (por ejemplo, Amazon SQS de AWS), Kafka introdujo una arquitectura de sistema de mensajería fundamentalmente diferente.

A diferencia de las colas de mensajes convencionales que eliminan los mensajes después del consumo, Kafka conserva los mensajes durante un tiempo configurable, lo que permite que varios consumidores lean los mismos datos de forma independiente. Esta capacidad hace que Kafka sea ideal para la mensajería y el abastecimiento de eventos, el procesamiento de transmisiones y la creación de pipelines de datos en tiempo real.

Hoy en día, Kafka se ha convertido en el estándar de facto para la transmisión de eventos en tiempo real. Las industrias que utilizan Kafka incluyen finanzas, comercio electrónico, telecomunicaciones y transporte, donde la capacidad de manejar grandes volúmenes de datos de manera rápida y confiable es esencial.

Cómo funciona Apache Kafka

Kafka es una plataforma distribuida; se ejecuta como un clúster tolerante a fallas y de alta disponibilidad que puede abarcar varios servidores e incluso varios centros de datos.

Kafka tiene tres capacidades principales:

  1. Permite que las aplicaciones publiquen o se suscriban a flujos de datos o eventos.
  2. Almacena los registros con precisión en el orden en que se produjeron, con un almacenamiento duradero y tolerante a fallos.
  3. Procesa registros en tiempo real a medida que ocurren.

Los productores (aplicaciones o temas) escriben registros en temas denominados grabaciones que almacenan los registros en el orden en que ocurrieron entre sí. Luego, los temas se dividen en particiones y se distribuyen en un clúster de agentes Kafka (servidores).

Dentro de cada partición, Kafka mantiene el orden de los registros y los almacena de forma duradera en disco durante un periodo de retención configurable. Aunque el orden está garantizado dentro de una partición, no lo está entre particiones. En función de las necesidades de la aplicación, los consumidores pueden leer independientemente desde estas particiones en tiempo real o desde un desplazamiento específico.

Kafka garantiza la confiabilidad a través de la replicación de particiones. Cada partición tiene un líder (en un broker) y uno o más seguidores (réplicas) en otros brokers. Esta replicación ayuda a tolerar fallas de nodos sin pérdida de datos.

Históricamente, Kafka ha dependido de Apache ZooKeeper, un servicio de coordinación centralizado para brokers distribuidos. ZooKeeper se aseguró de que los brokers de Kafka permanecieran sincronizados, incluso si algunos fallaban. En 2011, Kafka introdujo el modo KRaft (Kafka Raft Protocol), ya que eliminó la necesidad de ZooKeeper al consolidar estas tareas en los propios brokers de Kafka. Este cambio reduce las dependencias externas, simplifica la arquitectura y hace que los clústeres de Kafka sean más tolerantes a fallas y más fáciles de gestionar y escalar.

Vista aérea de una autopista

Mantenga su cabeza en la nube


Reciba el boletín semanal Think para obtener orientación de expertos sobre cómo optimizar la configuración multinube en la era de la IA.

API de Apache Kafka

Los desarrolladores pueden aprovechar las capacidades de Kafka a través de cuatro interfaces de programación de aplicaciones (API) principales:

  1. API de productor
  2. API de consumidor
  3. API de transmisiones
  4. API de conector
API de productor

La API de productor permite a una aplicación publicar un flujo en un tema de Kafka. Luego de escribir un registro en un tema, no se puede modificar ni borrar. En cambio, permanece en el tema durante un tiempo preconfigurado, durante dos días, o hasta que se agota el espacio de almacenamiento.

API de consumidor

La API de consumidor permite a una aplicación suscribirse a uno o más temas y procesar el flujo almacenado en el tema. Puede trabajar con registros en el tema en tiempo real o ingesta y procesar registros anteriores.

API de transmisiones

Esta API se basa en las API de productor y consumidor, y agrega capacidades de procesamiento complejas que permiten a una aplicación realizar un procesamiento continuo de principio a fin. En concreto, la API de flujos implica consumir registros de uno o varios temas, analizarlos, agregarlos o transformarlos según sea necesario y publicar los flujos resultantes en los mismos temas o en otros.

Si bien las API de productor y consumidor se pueden usar para un procesamiento de transmisión simple, la API de transmisiones permite el desarrollo de aplicaciones de transmisión de datos y eventos más sofisticadas.

API de conector

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

Casos de uso de Apache Kafka

Los desarrolladores utilizan Kafka principalmente para crear dos tipos de aplicaciones:

  • Pipelines de datos de transmisión en tiempo real
  • Aplicaciones de transmisión en tiempo real

Pipelines de datos de transmisión en tiempo real

Aplicaciones diseñadas específicamente para mover millones y millones de datos o registros de eventos entre sistemas empresariales, a escala y en tiempo real. Las aplicaciones deben moverlos de manera confiable, sin riesgo de corrupción, duplicación de datos u otros problemas que suelen ocurrir al mover volúmenes tan grandes de datos a altas velocidades.

Por ejemplo, las instituciones financieras utilizan Kafka para transmitir miles de transacciones por segundo a través de pasarelas de pago, servicios de detección de fraude y sistemas de contabilidad, lo que garantiza un flujo de datos preciso y en tiempo real sin duplicaciones ni pérdidas.

Aplicaciones de transmisión en tiempo real

Aplicaciones que se controlan mediante flujos de registros o eventos y que generan flujos propios. En el mundo impulsado por lo digital, nos encontramos con estas aplicaciones todos los días.

Los ejemplos incluyen sitios de comercio electrónico que actualizan la disponibilidad de productos en tiempo real o plataformas que ofrecen contenido personalizado y anuncios basados en la actividad del usuario en vivo. Kafka impulsa estas experiencias mediante la transmisión de las interacciones de los usuarios directamente a los motores de analytics y recomendaciones.

Otros casos de uso de Apache Kafka

  • Microservicios: Kafka facilita la comunicación entre microservicios al permitir la mensajería asincrónica basada en eventos. Esta característica permite que los servicios activen acciones en otros servicios sin estar estrechamente acoplados, lo que admite arquitecturas de sistemas escalables y desacopladas.
  • Entornos nativos de la nube en contenedores: Kafka se integra perfectamente con las plataformas nativas de la nube con Docker para la contenerización y Kubernetes para la orquestación de contenedores. Esta configuración admite una comunicación escalable, tolerante a fallas y basada en eventos, al tiempo que minimiza la necesidad de una gestión manual de la infraestructura. Kafka puede escalar y recuperarse automáticamente de fallos dentro de Kubernetes, lo que lo hace ideal para entornos dinámicos de computación en la nube que ejecutan diversas cargas de trabajo de aplicaciones.
  • Manejo de datos IoT (Internet de las cosas): Kafka es adecuado para procesar flujos de datos continuos desde dispositivos IoT, lo que permite el enrutamiento en tiempo real de datos de alto rendimiento y baja latencia a destinos como bases de datos, motores de analytics o herramientas de monitoreo. Esta capacidad admite aplicaciones sensibles al tiempo en industrias como la fabricación y la atención médica.
Academia de IA

Cómo lograr la preparación para la IA con la nube híbrida

Dirigido por los principales líderes de opinión de IBM, el plan de estudios está diseñado para ayudar a los líderes empresariales a obtener los conocimientos necesarios para priorizar las inversiones en IA que pueden impulsar el crecimiento.

El ecosistema Apache Kafka

Kafka se integra con varias otras tecnologías, muchas de las cuales son parte de la Apache Software Foundation (ASF). Las organizaciones suelen emplear estas tecnologías en arquitecturas más grandes basadas en eventos, procesamiento de flujo o soluciones de analytics de big data.

Algunas de estas tecnologías son de código abierto, mientras que Confluent, una plataforma construida en torno a Kafka, proporciona servicios gestionados y de características de nivel empresarial para el procesamiento de datos a escala en tiempo real. Empresas como IBM, Amazon Web Services y otras ofrecen soluciones basadas en Kafka (por ejemplo, IBM Event Streams, Amazon Kinesis) que se integran con Kafka para una transmisión de eventos escalable.

El ecosistema Apache Kafka incluye:

  • Supervisión de Apache Spark
  • Apache NiFi
  • Apache Flink
  • apache hadoop
  • Apache Camel
  • Apache Cassandra

Supervisión de Apache Spark

Apache Spark es un motor de analytics para el procesamiento de datos. Puede utilizar Spark para realizar analytics en transmisiones entregadas por Apache Kafka y para producir aplicaciones de procesamiento de transmisiones en tiempo real, como el análisis de flujo de clics.

Apache NiFi

Apache NiFi es un sistema de gestión de flujo de datos con una interfaz visual de arrastrar y soltar. Dado que NiFi puede ejecutarse como productor y 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 a gran escala en flujos de eventos con alta velocidad y baja latencia de manera constante. Flink puede realizar la ingesta de transmisiones como consumidor de Kafka, realizar operaciones en tiempo real basadas en estas transmisiones y publicar los resultados para Kafka u otra aplicación.

Apache Hadoop

Apache Hadoop es una infraestructura de software distribuida que le permite almacenar cantidades masivas de datos en un clúster de computadoras para su uso en analytics de big data, machine learning, minería de datos y otras aplicaciones basadas en datos que procesan datos estructurados y no estructurados. Kafka se utiliza a menudo para crear un pipeline de datos de transmisión en tiempo real a un clúster de Hadoop.

Apache Camel

Apache Camel es un marco de integración con un motor de enrutamiento y mediación basado en reglas. Admite Kafka como componente, lo que permite una fácil integración de datos con otros sistemas (por ejemplo, bases de datos, colas de mensajería), lo que permite que Kafka se convierta en parte de una arquitectura más grande basada en eventos.

Apache Cassandra

Apache Cassandra es una base de datos NoSQL altamente escalable diseñada para manejar grandes cantidades de datos en muchos servidores básicos sin ningún punto de falla.

Kafka se utiliza comúnmente para transmitir datos a Cassandra para la ingesta de datos en tiempo real y para crear aplicaciones escalables y tolerantes a fallas.

Kafka vs. RabbitMQ

RabbitMQ es un popular broker de mensajes de código abierto que permite que aplicaciones, sistemas y servicios se comuniquen mediante la traducción de protocolos de mensajería. Dado que Kafka comenzó como un broker de mensajes (y todavía se puede emplear como uno) y RabbitMQ admite un modelo de mensajería de publicación/suscripción (entre otros), Kafka y RabbitMQ a menudo se comparan como alternativas. Sin embargo, sirven para diferentes propósitos y están diseñados para abordar distintos tipos de casos de uso.  Por ejemplo, los temas de Kafka pueden tener múltiples suscriptores, mientras que cada mensaje de RabbitMQ solo puede tener uno. Además, los temas de Kafka son duraderos, mientras que los mensajes de RabbitMQ se eliminan una vez consumidos.

A la hora de elegir entre ellos, es esencial tener en cuenta las necesidades específicas de su aplicación, como el rendimiento, la durabilidad de los mensajes y la latencia. Kafka es adecuado para la transmisión de eventos a gran escala, mientras que RabbitMQ sobresale en escenarios que requieren un enrutamiento de mensajes flexible y un procesamiento de baja latencia.

Apache Kafka y la IA de código abierto

La integración de Apache Kafka y la IA de código abierto transforma la manera en que las organizaciones manejan los datos en tiempo real y la inteligencia artificial. Cuando se combina con herramientas de IA de código abierto, Kafka permite la aplicación de modelos de IA previamente entrenados a datos en vivo, lo que respalda la toma de decisiones y la automatización en tiempo real.

La IA de código abierto ha hecho que la inteligencia artificial sea más accesible, y Kafka proporciona la infraestructura necesaria para procesar datos en tiempo real. Esta configuración elimina la necesidad de procesamiento por lotes, lo que permite a las empresas actuar sobre los datos inmediatamente a medida que se producen.

Por ejemplo, una empresa de comercio electrónico podría usar Kafka para transmitir interacciones con los clientes, como clics o vistas de productos, a medida que ocurren. Los modelos de IA previamente entrenados procesan estos datos en tiempo real, y dan recomendaciones personalizadas u ofertas específicas. Kafka gestiona el flujo de datos, mientras que los modelos de IA se adaptan en función de los datos entrantes, lo que mejora la interacción del cliente.

Al combinar el procesamiento de datos en tiempo real con modelos de IA, las organizaciones pueden tomar decisiones más rápidas en la detección de fraudes, el mantenimiento predictivo o la fijación dinámica de precios, lo que permite sistemas más receptivos y eficientes.

Beneficios de Apache Kafka

  • Procesamiento de datos en tiempo real: Kafka permite pipelines datos en tiempo real y aplicaciones de transmisión. Permite a los sistemas publicar, suscribirse y procesar flujos de registros en el momento en que se producen, además de sustentar casos de uso como el monitorio, las alertas y analytics.
  • Alto rendimiento y escalabilidad: los temas de Kafka se particionan y replican de tal manera que se pueden escalar para atender grandes volúmenes de consumidores simultáneos sin afectar el rendimiento.
  •  Seguridad y cumplimiento: Apache Kafka admite el cifrado de datos tanto en tránsito como en reposo, junto con controles de acceso configurables. Estas características ayudan a las organizaciones a proteger los datos confidenciales y a alinearse con los estándares de cumplimiento de la industria.
  • Alta disponibilidad: Kafka garantiza una alta disponibilidad mediante la replicación de datos a través de múltiples brokers. Los mensajes siguen disponibles aunque falle un nodo, y el sistema continúa funcionando sin pérdida de datos ni tiempo de inactividad.
  •  Gestión simplificada: Kafka incluye herramientas de monitoreo, configuración y automatización, que ayudan a reducir la carga operacional. Se integra bien con las plataformas de orquestación y gestión, lo que hace que el despliegue y el escalado sean más manejables. Kafka también expone métricas detalladas de rendimiento y estado a través de JMX (Java Management Extensions), lo que permite a los equipos realizar un seguimiento del rendimiento, la latencia, el estado de los brokers y el retraso del consumidor, que son críticos para un monitoreo efectivo y la planificación de la capacidad.
  • Amplia integración: con una amplia gama de conectores y API de cliente, Kafka se integra fácilmente con bases de datos, sistemas de archivos y servicios en la nube. Por ejemplo, Kafka Connect facilita el movimiento de datos sin interrupciones entre sistemas, mientras que Kafka Streams permite el procesamiento de flujos en tiempo real, lo cual mejora aún más las capacidades de integración.