¿Qué es Apache Kafka?

30 de abril de 2025

Ocho minutos

Autores

Ian Smalley

Senior Editorial Strategist

¿Qué es Apache Kafka?

Apache Kafka es una plataforma distribuida de transmisión de eventos de código abierto que procesa datos en tiempo real. Kafka se destaca por brindar soporte a aplicaciones basadas en eventos y construir canalizaciones de datos confiables, ofreciendo 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 suceso 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 por qué implicar 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 al instante a la nueva información. Las plataformas de datos en streaming, como Apache Kafka, permiten a los desarrolladores crear sistemas que consumen, procesan y actúan sobre los datos a medida que llegan, manteniendo el orden y la fiabilidad de cada evento.

Kafka se ha convertido en la plataforma de transmisión de eventos más utilizada, capaz de consumir y procesar billones de registros diariamente sin ningún retraso perceptible en el rendimiento para admitir volúmenes escalables. Más del 80 % de las organizaciones de la lista Fortune 500 utilizan Kafka, incluidas Target, Microsoft, AirBnB y Netflix, para ofrecer experiencias de cliente en tiempo real y 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. Construido utilizando Java y Scala, Kafka fue posteriormente de código abierto y donado a la Apache Software Foundation.

Aunque las organizaciones ya admitían o utilizaban sistemas tradicionales de colas 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 de su consumo, Kafka conserva los mensajes durante un tiempo configurable, lo que permite a varios consumidores leer 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 flujos y la creación de canalizaciones 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. Los sectores que utilizan Kafka incluyen finanzas, comercio electrónico, telecomunicaciones y transporte, donde la capacidad de manejar grandes volúmenes de datos de forma rápida y fiable es esencial.

Cómo funciona Apache Kafka

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

Kafka tiene tres capacidades principales:

  1. Permite a las aplicaciones publicar o suscríbase a flujos de datos o transmisiones de 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 los registros en tiempo real a medida que se producen.

Los productores (aplicaciones o temas) escriben registros en temas denominados registros que almacenan los registros en el orden en que ocurrieron entre sí. A continuación, 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 duraderamente en el disco durante un periodo de retención configurable. Aunque el orden está garantizado dentro de una partición, no lo está entre particiones. Según las necesidades de la aplicación, los consumidores pueden leer de forma independiente estas particiones en tiempo real o desde un desplazamiento específico.

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

Históricamente, Kafka dependía de Apache ZooKeeper, un servicio de coordinación centralizado para corredores distribuidos. ZooKeeper garantizó que los brokers de Kafka permanecieran sincronizados, incluso si algunos brokers fallaban. En 2011, Kafka introdujo el modo KRaft (Kafka Raft Protocol), eliminando 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 administrar y escalar.

Vista aérea de 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 principales interfaces de programación de aplicaciones (API):

  1. Producer API
  2. API de consumidor
  3. API de secuencias
  4. API del conector
Producer API

La API Producer permite a una aplicación publicar una secuencia en un tema de Kafka. Una vez que se escribe un registro en un tema, no se puede modificar ni eliminar. En su lugar, permanece en el tema durante un período de tiempo preconfigurado, durante dos días o hasta que se agote el espacio de almacenamiento.

API de consumidor

La API de consumidor permite que una aplicación se suscriba a uno o varios temas y que consuma y procese la secuencia almacenada en el tema. Puede trabajar con registros del tema en tiempo real o ingerir y procesar registros anteriores.

API de secuencias

Esta API se basa en las API de productor y consumidor y añade capacidades de procesamiento complejas que permiten a una aplicación realizar un procesamiento continuo de front-to-backstream. Específicamente, la API de transmisiones implica consumir registros de uno o más temas, analizarlos, agregarlos o transformarlos según sea necesario, y publicar los flujos resultantes en los mismos temas u otros temas.

Aunque las API de productor y consumidor se pueden utilizar para procesar transmisiones de forma sencilla, la API de transmisiones permite el desarrollo de aplicaciones de transmisión de datos y eventos más sofisticadas.

API del 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:

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

Canalizaciones 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 forma fiable, sin riesgo de corrupción, duplicación de datos u otros problemas que suelen producirse 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 detección del fraude y sistemas de contabilidad, lo que garantiza un flujo de datos preciso y en tiempo real sin duplicaciones ni pérdidas.

Aplicaciones de streaming en tiempo real

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

Algunos ejemplos son los sitios de comercio electrónico que actualizan la disponibilidad de los productos en tiempo real o las plataformas que ofrecen contenidos y anuncios personalizados basados en la actividad en directo de los usuarios. Kafka impulsa estas experiencias mediante la transmisión de interacciones de usuarios directamente a los motores de análisis y recomendación.

Otros casos de uso de Apache Kafka

  • Microservicios: Kafka facilita la comunicación entre microservicios al permitir la mensajería asíncrona basada en eventos. Esta característica permite a los servicios desencadenar 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 a la perfección con las plataformas nativas de la nube  utilizando Docker para la contenerización y Kubernetes para la orquestación de contenedores. Esta configuración admite una comunicación escalable, tolerante a fallos 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 de cloud computing dinámicos que ejecutan diversas cargas de trabajo de aplicaciones.
  • Data lakes y almacenamiento de datos: Kafka actúa como canalización de datos en tiempo real entre fuentes de datos y plataformas de almacenamiento, como data lakes o almacenes de datos. Esta característica permite transmitir grandes volúmenes de datos para la ingesta y el análisis oportunos, lo cual es esencial para los flujos de trabajo modernos de análisis e inteligencia empresarial.
  • Gestión de datos IoT (Internet de las cosas): Kafka es ideal para procesar flujos continuos de datos 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 análisis o herramientas de monitorización. Esta capacidad admite aplicaciones urgentes en sectores como la fabricación y la sanidad.
AI Academy

Cómo prepararse para la IA con la nube híbrida

El plan de estudios, dirigido por los principales líderes de pensamiento de IBM, está diseñado para ayudar a los líderes empresariales a adquirir 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 forman parte de Apache Software Foundation (ASF). Las organizaciones suelen utilizar estas tecnologías en arquitecturas más grandes basadas en eventos, procesamiento de flujos o soluciones de análisis de big data.

Algunas de estas tecnologías son de código abierto, mientras que Confluent, una plataforma construida alrededor de Kafka, proporciona características de nivel empresarial y servicios gestionados para el proceso de datos en tiempo real a escala. 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:

  • Apache Spark
  • Apache NiFi
  • Apache Flink
  • Apache Hadoop
  • Camello Apache
  • Apache Cassandra

Apache Spark

Apache Spark es un motor de análisis para el proceso de datos a gran escala. Puede usar Spark para realizar análisis en flujos entregados por Apache Kafka y para producir aplicaciones de procesamiento de secuencias en tiempo real, como el análisis de secuencias 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 del flujo de datos que Kafka no puede abordar.

Apache Flink

Apache Flink es un motor para realizar cálculos a gran escala sobre flujos de eventos con una alta velocidad y una baja latencia constantes. Flink puede consumir flujos como consumidor de Kafka, realizar operaciones en tiempo real basadas en estos flujos y publicar los resultados para Kafka u 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 utiliza a menudo para crear una canalización 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 a Kafka convertirse 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 único de falla.

Kafka se utiliza habitualmente para transmitir datos a Cassandra para la ingesta de datos en tiempo real y para crear aplicaciones escalables y tolerantes a fallos.

Kafka vs. RabbitMQ

RabbitMQ es un popular agente de mensajes de código abierto que permite que las aplicaciones, los sistemas y los servicios se comuniquen mediante la traducción de protocolos de mensajería. Dado que Kafka comenzó como un agente de mensajes (y todavía se puede utilizar como tal) y RabbitMQ admite un modelo de mensajería de publicación/suscríbase (entre otros), Kafka y RabbitMQ se comparan a menudo como alternativas. Sin embargo, tienen diferentes propósitos y están diseñados para abordar varios tipos de casos de uso.  Por ejemplo, los temas de Kafka pueden tener varios 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 ellas, es fundamental tener en cuenta las necesidades específicas de su aplicación, como el rendimiento, la durabilidad de los mensajes y la latencia. Kafka es ideal para la transmisión de eventos a gran escala, mientras que RabbitMQ destaca en los 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 forma en que las organizaciones gestionan 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 preentrenados 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 más accesible la inteligencia artificial, y Kafka proporciona la infraestructura necesaria para procesar los datos en tiempo real. Esta configuración elimina la necesidad del 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 utilizar Kafka para transmitir las interacciones con los clientes, como los clics o las visualizaciones de los productos, a medida que se producen. Los modelos de IA preentrenados procesan estos datos en tiempo real y ofrecen 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 el compromiso con el cliente.

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

Beneficios de Apache Kafka

  • Proceso de datos en tiempo real: Kafka permite canalizaciones de datos en tiempo real y aplicaciones de transmisión. Permite a los sistemas publicar, suscríbase y procesar flujos de registros a medida que se producen, apoyando casos de uso como supervisión, alertas y análisis.
  • Alto rendimiento y escalabilidad: los temas de Kafka se particionan y replican de tal manera que pueden escalarse para atender grandes volúmenes de consumidores simultáneos sin afectar al 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 los sectores.
  • Alta disponibilidad: Kafka garantiza una alta disponibilidad a través de la data replication en múltiples agentes. Los mensajes permanecen disponibles incluso si un nodo falla, y el sistema continúa funcionando sin pérdida de datos ni tiempo de inactividad.
  •  Gestión simplificada: Kafka incluye herramientas de supervisión, configuración y automatización, que ayudan a reducir la carga operativa. Se integra bien con las plataformas de orquestación y gestión, haciendo que la implementación 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, la salud del intermediario y el retraso del consumidor, que son críticos para una supervisión eficaz y una planificación de la capacidad eficaz.
  • Integración amplia: con una amplia gama de conectores y API de cliente, Kafka se integra fácilmente con bases de datos, sistemas de archivos y servicios cloud. Por ejemplo, Kafka Connect facilita el movimiento fluido de datos entre sistemas, mientras que Kafka Streams permite el procesamiento de flujos en tiempo real, mejorando aún más las capacidades de integración.