Storm - Sistema de mensajería distribuida
Apache Storm procesa datos en tiempo real y la entrada normalmente proviene de un sistema de cola de mensajes. Un sistema de mensajería distribuido externo proporcionará la entrada necesaria para el cálculo en tiempo real. Spout leerá los datos del sistema de mensajería y los convertirá en tuplas y los ingresará en Apache Storm. Lo interesante es que Apache Storm utiliza internamente su propio sistema de mensajería distribuida para la comunicación entre su nimbus y su supervisor.
¿Qué es el sistema de mensajería distribuida?
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 los sistemas de mensajería. Un sistema de mensajería distribuida proporciona los beneficios de confiabilidad, escalabilidad y persistencia.
La mayoría de los patrones de mensajería siguen las publish-subscribe modelo (simplemente Pub-Sub) donde se llama a los remitentes de los mensajes publishers y los que quieran recibir los mensajes se llaman subscribers.
Una vez que el remitente ha publicado el mensaje, los suscriptores pueden recibir el mensaje seleccionado con la ayuda de una opción de filtrado. Normalmente tenemos dos tipos de filtrado, uno estopic-based filtering y otro es content-based filtering.
Tenga en cuenta que el modelo pub-sub solo puede comunicarse a través de mensajes. Es una arquitectura muy débilmente acoplada; incluso los remitentes no saben quiénes son sus suscriptores. Muchos de los patrones de mensajes permiten al intermediario de mensajes intercambiar mensajes de publicación para que muchos suscriptores tengan acceso oportuno. 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.
La siguiente tabla describe algunos de los sistemas de mensajería de alto rendimiento más populares:
Sistema de mensajería distribuida | Descripción |
---|---|
Apache Kafka | Kafka se desarrolló en la corporación LinkedIn y luego se convirtió en un subproyecto de Apache. Apache Kafka se basa en un modelo de publicación-suscripción distribuido, persistente y habilitado para la ruptura. Kafka es rápido, escalable y altamente eficiente. |
RabbitMQ | RabbitMQ es una aplicación de mensajería robusta distribuida de código abierto. Es fácil de usar y se ejecuta en todas las plataformas. |
JMS (servicio de mensajes Java) | JMS es una API de código abierto que admite la creación, lectura y envío de mensajes de una aplicación a otra. Proporciona entrega de mensajes garantizada y sigue el modelo de publicación-suscripción. |
ActiveMQ | El sistema de mensajería ActiveMQ es una API de código abierto de JMS. |
ZeroMQ | ZeroMQ es un procesamiento de mensajes entre pares sin intermediario. Proporciona patrones de mensajes push-pull, enrutador-distribuidor. |
Cernícalo | Kestrel es una cola de mensajes distribuida rápida, confiable y simple. |
Protocolo de ahorro
Thrift se creó en Facebook para el desarrollo de servicios en varios idiomas y la llamada a procedimiento remoto (RPC). Más tarde, se convirtió en un proyecto Apache de código abierto. Apache Thrift es unInterface Definition Language y permite definir nuevos tipos de datos y la implementación de servicios sobre los tipos de datos definidos de una manera sencilla.
Apache Thrift también es un marco de comunicación que admite sistemas integrados, aplicaciones móviles, aplicaciones web y muchos otros lenguajes de programación. Algunas de las características clave asociadas con Apache Thrift son su modularidad, flexibilidad y alto rendimiento. Además, puede realizar streaming, mensajería y RPC en aplicaciones distribuidas.
Storm utiliza ampliamente Thrift Protocol para su comunicación interna y definición de datos. La topología de tormenta es simplementeThrift Structs. Storm Nimbus que ejecuta la topología en Apache Storm es unaThrift service.