¿Qué es Apache Kafka?

Última actualización

Apache Kafka es una popular plataforma de streaming de eventos de código abierto que se usa para recoger, procesar y almacenar flujos continuos de eventos. Kafka se usa habitualmente como middleware de mensajería, pero ofrece escalabilidad y redundancia que permiten a las aplicaciones distribuidas gestionar desde un solo evento al día hasta miles de millones por segundo. A diferencia de los sistemas de mensajería tradicionales, Kafka también es un sistema de almacenamiento duradero que guarda los registros en un registro ordenado que se puede leer y volver a leer de forma reproducible. Esto hace que Kafka sea un sistema común para distribuir cambios en bases de datos transaccionales que se pueden usar para reconstruir o materializar los datos en analíticas y otros sistemas. Este patrón a veces se denomina "event sourcing".

Por tanto, Kafka es importante tanto para los patrones de bus de eventos tradicionales, en los que las aplicaciones basadas en eventos se integran mediante middleware de mensajería, como para las arquitecturas de sindicación de datos (o "materialización heterogénea"). Esto permite reducir la latencia y los costes. 

Descubre Google Cloud Managed Service para Apache Kafka para automatizar tu infraestructura de streaming y agilizar los flujos de trabajo de datos a IA. 

Información general sobre Apache Kafka

Kafka analiza los datos de streaming y hace constar qué ha sucedido y cuándo con total exactitud Este registro se denomina "registro de solo adición". Se considera inmutable porque, aunque se le puede añadir información, no se puede modificar. Desde ahí, las aplicaciones pueden suscribirse al registro para acceder a los datos o publicar en él para añadir más datos en tiempo real.

Aunque el núcleo de "Kafka" suele referirse al sistema de almacenamiento de baja latencia, la plataforma de streaming incluye otros componentes importantes. En primer lugar, Kafka Connect es un sistema de integración que permite conectar de forma horizontalmente escalable muchos sistemas importantes. Esto incluye conectores de captura de datos de cambios (CDC), replicación de clúster a clúster (MirrorMaker) y la posibilidad de escribir datos en sistemas posteriores, como lakehouses (Apache Iceberg), lakes (archivos Avro o Parquet en el almacenamiento de objetos) y bases de datos como BigQuery. En segundo lugar, los proyectos de Kafka se envían con un conjunto de clientes potentes, incluidos clientes de línea de comandos administrativos para manipular clústeres y temas, así como bibliotecas de clientes de alto rendimiento para leer y escribir datos.   

Tradicionalmente, el procesamiento de datos se ha gestionado con tareas por lotes periódicas que, primero, almacenaban los datos en bruto y, luego, se ejecutaban a intervalos arbitrarios. Por ejemplo, una empresa de retail puede esperar hasta el final del día para analizar los datos de ventas. Una de las limitaciones del procesamiento por lotes es que no se hace en tiempo real. Cada vez más organizaciones y científicos de datos quieren analizar los datos en tiempo real a medida que se generan para tomar decisiones empresariales oportunas y potenciar los modelos de IA en tiempo real. Aquí es donde entra en juego el streaming de eventos, que consiste en procesar de forma continua flujos infinitos de eventos a medida que se crean. De esta forma, se captura el valor de tiempo de los datos y se pueden crear aplicaciones basadas en inserciones que realicen acciones cada vez que suceda un hecho de interés. Para los científicos de datos, esto significa poder realizar ingeniería de características en tiempo real y ofrecer predicciones de baja latencia. 

Por qué los ingenieros de datos usan Apache Kafka

Aunque muchas empresas se centran en las estadísticas que generan los científicos de datos, los principales profesionales que utilizan Apache Kafka son los ingenieros de datos. Estos profesionales se encargan de crear los "conductos de datos" e integraciones esenciales que conectan las aplicaciones y bases de datos de una empresa.

Los ingenieros de datos usan Kafka para crear conexiones fiables en toda la pila tecnológica. Estas integraciones pueden adoptar varias formas:

  • De aplicación a aplicación: permite que los microservicios se comuniquen mediante arquitecturas basadas en eventos.
  • De base de datos a base de datos: sincronizar datos entre diferentes sistemas de almacenamiento para conseguir redundancia o un procesamiento especializado.
  • De aplicación a base de datos: captar eventos de frontend (como las interacciones de los usuarios en una aplicación móvil) y transmitirlos a bases de datos de backend.

En una empresa típica, el ingeniero de datos trabaja en estrecha colaboración con los equipos de aplicaciones para asegurarse de que los eventos de usuario, las transacciones empresariales y las actualizaciones de bases de datos se exportan a Kafka. Este proceso, conocido como sindicación de datos, hace que estos eventos estén disponibles para varios usuarios y sistemas de toda la organización al mismo tiempo.

Los ingenieros de datos escriben el código de los flujos de procesamiento que transforman los registros de aplicaciones sin procesar en formatos estructurados y de alta calidad. Esta transformación es esencial para los científicos de datos, que generalmente necesitan datos "limpios" almacenados en entornos consultables como data lakes, lakehouses o almacenes de datos en lugar de interactuar directamente con el flujo de Kafka sin procesar.

En el contexto de la ciencia de datos y la IA, el valor de Kafka reside principalmente en el acceso a los datos. Sirve como fuente exhaustiva de registros de aplicaciones y cambios en bases de datos. Aunque Kafka es conocido por su velocidad, para la mayoría de los flujos de trabajo de ciencia de datos, la amplitud y la fiabilidad de la fuente de datos son mucho más importantes que la entrega de baja latencia.

¿Por qué es importante Kafka para los sistemas de IA?

Los sistemas de IA se ejecutan con datos de entrenamiento de alta calidad y contexto durante la inferencia. Kafka suele ser fundamental para el entrenamiento, ya que recopila datos de entrenamiento de diversos sistemas de origen, desde registros de interacciones hasta cambios en bases de datos. En muchas organizaciones, se usa como un bus de eventos que agrega eventos de muchos servicios o simplemente como una ubicación de almacenamiento provisional para los registros de aplicaciones. Esto lo convierte en una fuente de datos natural y única para generar conjuntos de datos de entrenamiento. Como Kafka almacena los registros en una secuencia ordenada, también puede ser especialmente adecuado para los LLMs que operan en secuencias. 

Kafka es esencial para muchas tareas de inferencia online. La capacidad de una aplicación o un agente para ofrecer una recomendación de producto, una respuesta de búsqueda o una petición relevantes depende de que se disponga del contexto más actualizado de un usuario. Como Kafka admite una comunicación escalable y de baja latencia, permite que un sistema de inferencia actualice el contexto del usuario con los últimos eventos en cuestión de decenas de milisegundos. Por ejemplo, si un usuario rechaza la última recomendación de canción en una aplicación de música o si el precio de una acción cambia en una aplicación financiera, un servicio de recomendaciones puede generar inmediatamente una sugerencia mejor teniendo en cuenta esta información. 

¿Cuáles son las ventajas de Kafka?

Ecosistema de código abierto

El código fuente de Kafka está disponible sin coste y cuenta con una comunidad global que contribuye con una amplia gama de conectores, herramientas de monitorización y complementos.

Escalabilidad y rapidez

Kafka es una plataforma distribuida, lo que significa que el procesamiento se divide entre varias máquinas. Esto le permite escalar para gestionar grandes volúmenes de datos y, al mismo tiempo, mantener una latencia inferior a un milisegundo.

Alta disponibilidad

Como está distribuido, Kafka sigue siendo fiable incluso si fallan máquinas individuales, lo que lo hace adecuado para aplicaciones de misión crítica.

Kafka como servicio gestionado

La configuración de clústeres de Kafka on-premise es notoriamente difícil, ya que los equipos tienen que aprovisionar máquinas, gestionar la seguridad y encargarse de los parches rutinarios.  Con un servicio gestionado, un proveedor se encarga de la infraestructura subyacente, lo que te permite centrarte en crear aplicaciones. Esto es especialmente útil para los equipos de ciencia de datos que quieren centrarse en el desarrollo de modelos y en la obtención de información valiosa en lugar de en la gestión de la infraestructura. 

Soluciona los retos empresariales que se te presenten con Google Cloud

Los nuevos clientes reciben 300 USD en crédito sin coste para invertirlos en Google Cloud.
Habla con un especialista del equipo de ventas de Google Cloud para hablar sobre tu reto único con más detalle.

¿Cómo funciona Kafka?

Kafka permite procesar eventos de streaming por medio de cuatro unciones clave:

  1. Producir o escribir datos: una fuente puede escribir registros, eventos, registros o datos en temas (grupos de eventos de datos). 
  2. Almacenamiento: Apache Kafka proporciona un almacenamiento duradero y de alta disponibilidad, que suele servir como una "fuente de información veraz" fiable para las arquitecturas basadas en eventos. Esto es especialmente útil cuando necesitas volver atrás y ver qué ha pasado históricamente, en lugar de simplemente reaccionar a los eventos en directo. Como Kafka almacena los registros en un registro ordenado que se puede leer y volver a leer de forma reproducible, permite a los equipos reconstruir datos en sistemas de analíticas o investigar transacciones pasadas con todo el contexto. 
  3. Consumir: una aplicación puede leer uno o varios temas para procesar el flujo de datos resultante.
  4. Conectar: los conectores reutilizables vinculan Kafka con sistemas como BigQuery y Dataproc.

Recursos adicionales

Ve un paso más allá

Empieza a crear en Google Cloud con 300 USD en crédito sin coste económico y más de 20 productos que siempre se ofrecen sin coste.

Google Cloud