Apache Kafka

Apache Kafka es un sistema distribuido de mensajería de publicación y suscripción que recibe datos de distintos sistemas de origen y los pone a disposición de los sistemas de destino en tiempo real. Kafka está escrito en Scala y Java y, a menudo, se asocia con el procesamiento de flujo de eventos en tiempo real para big data.

Al igual que otros sistemas de intermediarios de mensajes, Kafka facilita el intercambio de datos asincrónico entre procesos, aplicaciones y servidores. Sin embargo, a diferencia de otros sistemas de mensajería, Kafka tiene una sobrecarga muy baja porque no rastrea el comportamiento del consumidor y elimina los mensajes que se han leído. En cambio, Kafka retiene todos los mensajes durante un período de tiempo determinado y responsabiliza al consumidor de rastrear qué mensajes se han leído.

El software de Kafka se ejecuta en uno o más servidores y cada nodo de un clúster de Kafka se denomina intermediario. Kafka usa Apache ZooKeeper para administrar clústeres; El trabajo del corredor es ayudar a que las aplicaciones de los productores escriban datos en los temas y las aplicaciones de los consumidores lean de los temas. Los temas se dividen en particiones para hacerlos más manejables y Kafka garantiza un orden sólido para cada partición. Debido a que los mensajes se escriben en una partición en un orden particular y se leen en el mismo orden, cada partición se convierte esencialmente en un registro de confirmación que puede funcionar como una única fuente de verdad (SSoT) para los eventos de un sistema distribuido.

La base de código de Kafka, que se desarrolló originalmente en LinkedIn para proporcionar un mecanismo de carga paralela en los sistemas Hadoop, se convirtió en un proyecto de código abierto de la Apache Software Foundation en 2011. En 2014, los desarrolladores de LinkedIn que crearon Kafka iniciaron una empresa llamada Confluent para Facilite las implementaciones de Kafka y respalde los productos Kafka-as-a-service de nivel empresarial. La versión 5.0 de la plataforma Confluent, que se lanzó comercialmente en 2018, mejora el manejo de la conmutación por error del cliente de la aplicación para la recuperación de desastres (DR) y reduce la dependencia del lenguaje de programación Java para las aplicaciones de análisis de transmisión de datos.