APACHE KAFKA: PLATAFORMA DE STREAMING DE EVENTOS
Apache Kafka es una plataforma de streaming de eventos distribuida, de código abierto, diseñada para manejar volúmenes masivos de datos en tiempo real de manera fiable, escalable y de alto rendimiento. Originalmente desarrollada por LinkedIn, hoy es uno de los proyectos más importantes de la Apache Software Foundation y una pieza fundamental en las arquitecturas de datos modernas.Kafka no es solo un sistema de mensajería tradicional; se comporta como un log distribuido y replicado que permite publicar, almacenar y consumir flujos de eventos de forma continua. Empresas como Netflix, Uber, Spotify, LinkedIn y miles más lo utilizan para procesar millones de eventos por segundo. Kafka se creó en 2010 en LinkedIn para resolver problemas de agregación de logs y procesamiento de datos en tiempo real a gran escala. En 2011 se liberó como proyecto open source bajo Apache.
Conceptos Clave de Kafka
- Topic (Tema): Categoría o canal lógico donde se publican los eventos. Es como una tabla en una base de datos, pero optimizada para streams.
- Partition (Partición): Las topics se dividen en particiones para permitir paralelismo y escalabilidad. Cada partición es un log ordenado e inmutable.
- Producer: Aplicación que publica mensajes a un topic.
- Consumer: Aplicación que consume mensajes de uno o más topics. Los consumidores pueden trabajar en grupos para distribuir la carga.
- Broker: Servidor de Kafka que almacena las particiones y sirve datos a productores y consumidores.
- Replica: Copias de las particiones para tolerancia a fallos.
- Offset: Identificador único y secuencial de cada mensaje dentro de una partición, que permite a los consumidores reanudar la lectura desde un punto específico.
Arquitectura
Kafka sigue un modelo distribuido y fault-tolerant. Un clúster está compuesto por múltiples brokers. Los productores empujan datos (push), mientras que los consumidores los tiran (pull) a su propio ritmo, lo que mejora el control y el rendimiento. Con KRaft, la coordinación del clúster se maneja internamente mediante un protocolo Raft, eliminando ZooKeeper y simplificando despliegues, especialmente en entornos cloud y Kubernetes./ Además, Kafka ofrece APIs potentes:
- Producer y Consumer API
- Kafka Streams para procesamiento de streams en tiempo rea)
- Kafka Connect para integrar fácilmente con bases de datos, sistemas legacy, etc. Admin API
Casos de Uso Principales
- Aggregación de logs y monitoreo: Recopilar logs de miles de servidores en tiempo real.
- Pipelines de datos en tiempo real: Mover datos entre sistemas (ETL en streaming).
- Event-Driven Architectures (EDA): Comunicación asíncrona entre microservicios.
- Analítica en tiempo real y machine learning: Procesar eventos para recomendaciones, detección de fraudes, etc.
- IoT y telemetría: Manejar millones de dispositivos enviando datos continuamente.
- Replicación de bases de datos: Change Data Capture.