Apache Kafka - Introducción

En Big Data se utiliza un enorme volumen de datos. En cuanto a los datos, tenemos dos desafíos principales: el primer desafío es cómo recopilar un gran volumen de datos y el segundo desafío es analizar los datos recopilados. Para superar esos desafíos, debe necesitar un sistema de mensajería.

Kafka está diseñado para sistemas distribuidos de alto rendimiento. Kafka tiende a funcionar muy bien como reemplazo de un corredor de mensajes más tradicional. En comparación con otros sistemas de mensajería, Kafka tiene un mejor rendimiento, particionamiento incorporado, replicación y tolerancia a fallas inherente, lo que lo hace una buena opción para aplicaciones de procesamiento de mensajes a gran escala.

¿Qué es un sistema de mensajería?

Un sistema de mensajería es responsable de transferir datos de una aplicación a otra, por lo que las aplicaciones pueden enfocarse en los datos, pero sin preocuparse por cómo compartirlos. La mensajería distribuida se basa en el concepto de cola de mensajes confiable. Los mensajes se ponen en cola de forma asincrónica entre las aplicaciones cliente y el sistema de mensajería. Hay dos tipos de patrones de mensajería disponibles: uno es punto a punto y el otro es un sistema de mensajería de publicación-suscripción (pub-sub). La mayoría de los patrones de mensajería siguenpub-sub.

Sistema de mensajería punto a punto

En un sistema de punto a punto, los mensajes se conservan en una cola. Uno o más consumidores pueden consumir los mensajes en la cola, pero un mensaje en particular puede ser consumido por un máximo de un solo consumidor. Una vez que un consumidor lee un mensaje en la cola, desaparece de esa cola. El ejemplo típico de este sistema es un Sistema de procesamiento de pedidos, donde cada pedido será procesado por un Procesador de pedidos, pero los Procesadores de pedidos múltiples también pueden funcionar al mismo tiempo. El siguiente diagrama muestra la estructura.

Sistema de mensajería de publicación-suscripción

En el sistema de publicación-suscripción, los mensajes se conservan en un tema. A diferencia del sistema punto a punto, los consumidores pueden suscribirse a uno o más temas y consumir todos los mensajes de ese tema. En el sistema Publicar-Suscribir, los productores de mensajes se denominan editores y los consumidores de mensajes se denominan suscriptores. Un ejemplo de la vida real es Dish TV, que publica diferentes canales como deportes, películas, música, etc., y cualquiera puede suscribirse a su propio conjunto de canales y obtenerlos cuando sus canales suscritos estén disponibles.

¿Qué es Kafka?

Apache Kafka es un sistema de mensajería de publicación-suscripción distribuido y una cola robusta que puede manejar un gran volumen de datos y le permite pasar mensajes de un punto final a otro. Kafka es adecuado para el consumo de mensajes en línea y sin conexión. Los mensajes de Kafka se conservan en el disco y se replican dentro del clúster para evitar la pérdida de datos. Kafka se basa en el servicio de sincronización de ZooKeeper. Se integra muy bien con Apache Storm y Spark para el análisis de datos de transmisión en tiempo real.

Beneficios

A continuación se presentan algunos beneficios de Kafka:

  • Reliability - Kafka está distribuido, particionado, replicado y con tolerancia a fallos.

  • Scalability - El sistema de mensajería de Kafka se amplía fácilmente sin tiempo de inactividad.

  • Durability- Kafka utiliza un registro de confirmación distribuido, lo que significa que los mensajes persisten en el disco lo más rápido posible, por lo que es duradero.

  • Performance- Kafka tiene un alto rendimiento tanto para la publicación como para la suscripción de mensajes. Mantiene un rendimiento estable incluso se almacenan muchos TB de mensajes.

Kafka es muy rápido y garantiza cero tiempo de inactividad y cero pérdida de datos.

Casos de uso

Kafka se puede utilizar en muchos casos de uso. Algunos de ellos se enumeran a continuación:

  • Metrics- Kafka se utiliza a menudo para datos de seguimiento operativo. Esto implica agregar estadísticas de aplicaciones distribuidas para producir fuentes centralizadas de datos operativos.

  • Log Aggregation Solution - Kafka se puede utilizar en toda una organización para recopilar registros de varios servicios y ponerlos a disposición en un formato estándar para varios consumidores.

  • Stream Processing- Los marcos populares como Storm y Spark Streaming leen datos de un tema, los procesan y escriben datos procesados ​​en un nuevo tema donde están disponibles para usuarios y aplicaciones. La gran durabilidad de Kafka también es muy útil en el contexto del procesamiento de flujos.

Necesidad de Kafka

Kafka es una plataforma unificada para manejar todas las fuentes de datos en tiempo real. Kafka admite la entrega de mensajes de baja latencia y garantiza la tolerancia a fallos en presencia de fallos de la máquina. Tiene la capacidad de manejar una gran cantidad de consumidores diversos. Kafka es muy rápido, realiza 2 millones de escrituras / seg. Kafka conserva todos los datos en el disco, lo que esencialmente significa que todas las escrituras van al caché de página del sistema operativo (RAM). Esto hace que sea muy eficiente transferir datos desde la caché de la página a un conector de red.