Hay muchas opciones para los sistemas de mensajería de publicación/suscripción, entonces, ¿qué hace Apache Kafka es una buena elección?
Múltiples productores
Kafka puede manejar sin problemas a varios productores, ya sea que esos clientes estén usando muchos temas o el mismo tema. Esto hace que el sistema sea ideal para agregar datos de muchos sistemas frontend y hacerlo coherente. Por ejemplo, un sitio que ofrece contenido a los usuarios a través de varios microservicios puede tener un solo tema para las vistas de página en el que todos los servicios pueden escribir utilizando un formato común. Las aplicaciones de consumo pueden recibir un único flujo de vistas de página para todas las aplicaciones del sitio sin tener que coordinar el consumo de varios temas, uno para cada aplicación.
Múltiples consumidores
Además de múltiples productores, Kafka está diseñado para que múltiples consumidores lean cualquier flujo de mensajes sin interferir entre sí. Esto contrasta con muchos sistemas de colas en los que una vez que un cliente consume un mensaje, no disponible para cualquier otro. Múltiples consumidores de Kafka pueden optar por operar como parte de un grupo y compartir un flujo, asegurando que todo el grupo procese un mensaje determinado solo una vez.
Retención basada en disco
Kafka no solo puede manejar varios consumidores, sino que la retención duradera de mensajes significa que los consumidores no siempre necesitan trabajar en tiempo real. Los mensajes se envían al disco y se almacenan con reglas de retención configurables. Estas opciones pueden ser seleccionados por tema, lo que permite que diferentes flujos de mensajes tengan diferentes cantidades de retención según las necesidades del consumidor. La retención duradera significa que si un consumidor se retrasa, ya sea debido a un procesamiento lento o una ráfaga de tráfico, no hay peligro de perder datos. También significa que el mantenimiento se puede realizar en los consumidores, desconectando las aplicaciones durante un corto período de tiempo, sin preocuparse por la copia de seguridad de los mensajes en el productor o por perderse. Se puede detener a los consumidores y los mensajes se conservarán en Kafka. Esto les permite reiniciar y retomar el procesamiento de mensajes donde lo dejaron sin pérdida de datos.
Escalable
La escalabilidad flexible de Kafka facilita el manejo de cualquier cantidad de datos. Los usuarios pueden comenzar con un solo intermediario como prueba de concepto, expandirse a un pequeño grupo de desarrollo de tres intermediarios y pasar a producción con un grupo más grande de decenas o incluso cientos de intermediarios que crece con el tiempo a medida que los datos aumentan. Las expansiones se pueden realizar mientras el clúster está en línea, sin impacto en la disponibilidad del sistema en su conjunto. Esto también significa que un grupo de múltiples corredores puede manejar la falla de un corredor individual y continuar atendiendo a los clientes. Los clústeres que necesitan tolerar más fallas simultáneas se pueden configurar con factores de replicación más altos.
Alto rendimiento
Todas estas características se combinan para hacer de Apache Kafka un sistema de mensajería de publicación / suscripción con un rendimiento excelente bajo una gran carga. Los productores, consumidores e intermediarios se pueden escalar para manejar flujos de mensajes muy grandes con facilidad. Esto se puede hacer sin dejar de proporcionar una latencia de mensaje de un segundo desde la producción de un mensaje hasta la disponibilidad para los consumidores.
El ecosistema de datos
Muchas aplicaciones participan en los entornos de procesamiento de datos. Tenemos aplicaciones que crean datos o los introducen en el sistema. Sistema de salida que forman métricas, informes y otros productos de datos. Sistemas bucles, con algunos componentes leyendo datos del sistema, transformándolos utilizando datos de otras fuentes y luego volviéndolos a introducir en la infraestructura de datos para usarlos en otros lugares. Esto se hace para numerosos tipos de datos, y cada uno tiene cualidades únicas de contenido, tamaño y uso.
Apache Kafka proporciona el sistema circulatorio para el ecosistema de datos. Transporta mensajes entre los distintos miembros de la infraestructura, proporcionando una interfaz coherente para todos los clientes. Cuando se combina con un sistema para proporcionar esquemas de mensajes, los productores y consumidores ya no requieren un acoplamiento estrecho o conexiones directas de ningún tipo. Los componentes se pueden agregar y eliminar a medida que se crean y se disuelven los casos de negocios, y los productores no necesitan preocuparse por quién está usando los datos o la cantidad de aplicaciones consumidoras.