Escenarios de aplicación
Kafka es un popular middleware orientado a mensajes que ofrece una entrega de mensajes asincrónicos y altamente confiable. Es ampliamente utilizado para la transmisión de datos entre diferentes sistemas en la aplicación empresarial, el pago, las telecomunicaciones, el comercio electrónico, las redes sociales, la mensajería instantánea, el vídeo, el Internet de las cosas y el Internet de las industrias de vehículos.
Comunicación asíncrona
Los mensajes no básicos o menos importantes se envían de forma asíncrona a los sistemas receptores, de modo que el proceso de servicio principal no se mantiene esperando los resultados de otros sistemas, lo que permite respuestas más rápidas.
Por ejemplo, Kafka se puede utilizar para enviar un correo electrónico de notificación y un mensaje SMS después de que un usuario se haya registrado en un sitio web, proporcionando respuestas rápidas durante todo el proceso de registro.
Control de tráfico
En los sistemas de comercio electrónico o en los sitios web a gran escala, existe una brecha de capacidad de procesamiento entre los sistemas anteriores y posteriores. Las ráfagas de tráfico de sistemas ascendentes con altas capacidades de procesamiento pueden tener un gran impacto en sistemas descendentes con menores capacidades de procesamiento. Por ejemplo, las promociones de ventas online implican una gran cantidad de tráfico que inunda los sistemas de comercio electrónico. Kafka proporciona un búfer de tres días de forma predeterminada para cientos de millones de mensajes, como pedidos y otra información. De esta manera, los sistemas de consumo de mensajes pueden procesar los mensajes durante periodos fuera de pico.
Además, las ráfagas de tráfico de ventas flash que se originan en los sistemas frontend se pueden manejar con Kafka, lo que evita que los sistemas backend se bloqueen.
Sincronización de registros
En los sistemas de servicio a gran escala, se recopilan registros de diferentes aplicaciones para la resolución rápida de problemas, el seguimiento de enlaces completos y la supervisión en tiempo real.
Kafka está diseñado originalmente para este escenario. Las aplicaciones asíncronamente envían los mensajes de registro a las colas de mensajes a través de canales de transmisión fiables. Otros componentes pueden leer los mensajes de registro de las colas de mensajes para su análisis posterior, ya sea en tiempo real o fuera de línea. Además, Kafka puede recopilar información clave de registro para monitorear aplicaciones.
La sincronización de registros implica tres componentes principales: clientes de recopilación de registros, Kafka y aplicaciones de procesamiento de registros de back-end.
- Los clientes de recopilación de registros recogen los datos de registro de un servicio de aplicación de usuario y los envían de forma asíncrona por lotes a los clientes Kafka.
Los clientes Kafka reciben y comprimen mensajes por lotes. Esto solo tiene un impacto menor en el rendimiento del servicio.
- Kafka persiste los registros.
- Las aplicaciones de procesamiento de registros, como Logstash, se suscriben a mensajes en Kafka y recuperan mensajes de registro de Kafka. A continuación, los mensajes son buscados por los servicios de búsqueda de archivos o entregados a aplicaciones de big data como Hadoop para el almacenamiento y el análisis.
Logstash es para el análisis de registros, el ElasticSearch es para la búsqueda de registros y el Hadoop es para el análisis de big data. Todas son herramientas de código abierto.