Articulo de referencia

Middleware orientado a mensajes

El middleware orientado a mensajes ( MOM ) es una infraestructura de software o hardware que permite enviar y recibir mensajes entre sistemas distribuidos. El middleware orienta...

El middleware orientado a mensajes ( MOM ) es una infraestructura de software o hardware que permite enviar y recibir mensajes entre sistemas distribuidos. El middleware orientado a mensajes se diferencia del middleware orientado a flujos, donde los datos se comunican como una secuencia de bytes sin límites de mensaje explícitos. Cabe destacar que los protocolos de flujo casi siempre se construyen sobre protocolos que utilizan mensajes discretos, como tramas ( Ethernet ), datagramas ( UDP ), paquetes ( IP ), celdas ( ATM ), etc.

MOM permite distribuir módulos de aplicación en plataformas heterogéneas y reduce la complejidad del desarrollo de aplicaciones que abarcan múltiples sistemas operativos y protocolos de red. El middleware crea una capa de comunicaciones distribuida que aísla al desarrollador de la aplicación de los detalles de los distintos sistemas operativos e interfaces de red. Las interfaces de programación de aplicaciones ( API ) que se extienden a través de diversas plataformas y redes suelen ser proporcionadas por MOM. [ 1 ]

Esta capa de middleware permite que los componentes de software (aplicaciones, servlets y otros componentes) desarrollados de forma independiente y que pueden ejecutarse en diferentes plataformas de red interactúen entre sí. Las aplicaciones distribuidas en diferentes nodos de red utilizan la interfaz de la aplicación para comunicarse. Además, al proporcionar una interfaz administrativa, este nuevo sistema virtual de aplicaciones interconectadas puede hacerse tolerante a fallos y seguro. [ 2 ]

MOM proporciona elementos de software que residen en todos los componentes comunicantes de una arquitectura cliente/servidor y, por lo general, admiten llamadas asíncronas entre las aplicaciones cliente y servidor. MOM reduce la complejidad que implica para los desarrolladores de aplicaciones lidiar con la naturaleza maestro-esclavo del mecanismo cliente/servidor.

Categorías de middleware

Todos estos modelos permiten que un componente de software afecte el comportamiento de otro componente a través de una red. Se diferencian en que el middleware basado en RPC y ORB crea sistemas de componentes fuertemente acoplados, mientras que los sistemas basados ​​en MOM permiten un acoplamiento más flexible de los componentes. En un sistema basado en RPC u ORB, cuando un procedimiento llama a otro, debe esperar a que el procedimiento llamado devuelva un resultado antes de poder realizar cualquier otra acción. En estos modelos de mensajería mayoritariamente síncronos , el middleware funciona parcialmente como un superenlazador, localizando el procedimiento llamado en una red y utilizando servicios de red para pasar parámetros de función o método al procedimiento y, posteriormente, devolver los resultados. [ 2 ] Cabe destacar que los intermediarios de solicitudes de objetos también admiten mensajería totalmente asíncrona mediante invocaciones unidireccionales. [ 3 ]

Ventajas

Entre las razones principales para utilizar un protocolo de comunicaciones basado en mensajes se incluye su capacidad para almacenar (guardar en búfer), enrutar o transformar mensajes mientras se transmiten desde los remitentes a los receptores.

Otra ventaja de la mensajería entre clientes mediada por el proveedor es que, al añadir una interfaz administrativa, se puede supervisar y optimizar el rendimiento. De este modo, las aplicaciones cliente quedan exentas de cualquier problema, salvo el de enviar, recibir y procesar mensajes. Corresponde al código que implementa el sistema de mensajería mediada por el proveedor y al administrador resolver cuestiones como la interoperabilidad, la fiabilidad, la seguridad, la escalabilidad y el rendimiento.

Asincronía

Mediante un sistema MOM, un cliente realiza una llamada a la API para enviar un mensaje a un destino gestionado por el proveedor. La llamada invoca los servicios del proveedor para enrutar y entregar el mensaje. Una vez enviado, el cliente puede continuar con otras tareas, con la seguridad de que el proveedor lo conserva hasta que un cliente receptor lo recupere. El modelo basado en mensajes, junto con la mediación del proveedor, permite crear un sistema de componentes débilmente acoplados.

MOM comprende una categoría de software de comunicación entre aplicaciones que generalmente se basa en el paso de mensajes asíncrono , a diferencia de una arquitectura de solicitud-respuesta . En los sistemas asíncronos, las colas de mensajes proporcionan almacenamiento temporal cuando el programa de destino está ocupado o no está conectado. Además, la mayoría de los sistemas MOM asíncronos proporcionan almacenamiento persistente para respaldar la cola de mensajes. Esto significa que el emisor y el receptor no necesitan conectarse a la red al mismo tiempo ( entrega asíncrona ), y se resuelven los problemas de conectividad intermitente. También significa que, si la aplicación receptora falla por cualquier motivo, los emisores pueden continuar sin verse afectados, ya que los mensajes que envían simplemente se acumularán en la cola de mensajes para su posterior procesamiento cuando el receptor se reinicie.

Enrutamiento

Muchas implementaciones de middleware orientadas a mensajes dependen de un sistema de colas de mensajes . Algunas permiten que la lógica de enrutamiento la proporcione la propia capa de mensajería, mientras que otras dependen de las aplicaciones cliente para proporcionar la información de enrutamiento o permiten una combinación de ambos paradigmas. Algunas implementaciones utilizan paradigmas de distribución por difusión o multidifusión .

Transformación

En un sistema de middleware basado en mensajes, el mensaje recibido en el destino no tiene por qué ser idéntico al mensaje original. Un sistema MOM con inteligencia integrada puede transformar mensajes y enrutarlos para que se ajusten a los requisitos del remitente o del destinatario. [ 4 ] Junto con las funciones de enrutamiento y difusión/ multidifusión , una aplicación puede enviar un mensaje en su formato nativo, y dos o más aplicaciones pueden recibir una copia del mensaje en su propio formato nativo. Muchos sistemas MOM modernos proporcionan sofisticadas herramientas de transformación (o mapeo) de mensajes que permiten a los programadores especificar reglas de transformación aplicables a una sencilla operación de arrastrar y soltar en la interfaz gráfica de usuario .

Desventajas

La principal desventaja de muchos sistemas de middleware orientados a mensajes es que requieren un componente adicional en su arquitectura : el agente de transferencia de mensajes (o intermediario de mensajes ). Como ocurre con cualquier sistema , añadir otro componente puede reducir el rendimiento y la fiabilidad, además de dificultar y encarecer el mantenimiento del sistema en su conjunto .

Además, muchas comunicaciones entre aplicaciones tienen un aspecto intrínsecamente síncrono , donde el remitente espera específicamente una respuesta a un mensaje antes de continuar (véanse los casos extremos de computación en tiempo real y casi real ). Dado que la comunicación basada en mensajes funciona inherentemente de forma asíncrona, puede que no sea adecuada para estas situaciones. Dicho esto, la mayoría de los sistemas MOM cuentan con mecanismos para agrupar una solicitud y una respuesta como una única transacción pseudosíncrona.

En un sistema de mensajería síncrono, la función que realiza la llamada no regresa hasta que la función llamada haya finalizado su tarea. En un sistema asíncrono de acoplamiento flexible , el cliente que realiza la llamada puede seguir sobrecargando de trabajo al receptor hasta que se agoten los recursos necesarios para gestionarlo y el componente llamado falle. Por supuesto, estas condiciones pueden minimizarse o evitarse monitorizando el rendimiento y ajustando el flujo de mensajes, pero esto no es necesario con un sistema de mensajería síncrono. Lo importante es comprender las ventajas y desventajas de cada tipo de sistema. Cada sistema es adecuado para diferentes tipos de tareas. En ocasiones, se requiere una combinación de ambos tipos de sistemas para obtener el comportamiento deseado.

Estándares

Históricamente, la falta de estándares que regulen el uso de middleware orientado a mensajes ha generado problemas. La mayoría de los principales proveedores tienen sus propias implementaciones, cada una con su propia interfaz de programación de aplicaciones (API) y herramientas de gestión.

Uno de los estándares de larga trayectoria para el middleware orientado a mensajes es la especificación XATMI (Distributed Transaction Processing: The XATMI Specification) del grupo X/Open, que estandariza la API para las comunicaciones entre procesos . Algunas implementaciones conocidas de esta API son el middleware Enduro/X de ATR Baltic y Tuxedo de Oracle .

El Protocolo Avanzado de Cola de Mensajes (AMQP) es un estándar aprobado por OASIS [ 5 ] e ISO [ 6 ] que define el protocolo y los formatos utilizados entre los componentes de la aplicación participantes, por lo que las implementaciones son interoperables. AMQP se puede utilizar con esquemas de enrutamiento flexibles, incluidos paradigmas de mensajería comunes como punto a punto , fan-out , publicación/suscripción y solicitud-respuesta (estos se omiten intencionalmente en la v1.0 del estándar del protocolo, pero dependen de la implementación particular y/o del protocolo de red subyacente para el enrutamiento). También admite la gestión de transacciones, colas, distribución, seguridad, administración, clustering, federación y soporte multiplataforma heterogéneo. Las aplicaciones Java que utilizan AMQP suelen estar escritas en Java JMS. Otras implementaciones proporcionan API para C# , C++ , PHP , Python , Ruby y otros lenguajes de programación .

La arquitectura de alto nivel (HLA IEEE 1516) es un estándar del Instituto de Ingenieros Eléctricos y Electrónicos (IEEE) y de la Organización de Estándares de Interoperabilidad de Simulación (SISO) para la interoperabilidad de simulaciones. Define un conjunto de servicios, proporcionados a través de una API en C++ o Java. Estos servicios ofrecen intercambio de información basado en publicación/suscripción, fundamentado en un modelo de objetos de federación modular. También incluye servicios para el intercambio coordinado de datos y el avance temporal, basados ​​en el tiempo lógico de simulación, así como puntos de sincronización. Otros servicios adicionales permiten la transferencia de propiedad, la optimización de la distribución de datos y la monitorización y gestión de los sistemas federados participantes.

El protocolo MQ Telemetry Transport (MQTT) es un estándar ISO (ISO/IEC PRF 20922) respaldado por la organización OASIS. Proporciona un protocolo de transporte de mensajería fiable, ligero y de publicación/suscripción, basado en TCP/IP, adecuado para la comunicación en entornos M2M/IoT donde se requiere un código reducido o el ancho de banda de la red es limitado.

El Servicio de Distribución de Datos (DDS) del Object Management Group proporciona un estándar de middleware de publicación/suscripción (P/S) orientado a mensajes que busca permitir intercambios de datos escalables, en tiempo real, confiables, de alto rendimiento e interoperables entre publicadores y suscriptores. [ 7 ] El estándar proporciona interfaces para C++, C++11, C, Ada , Java y Ruby.

XMPP

El Protocolo de Mensajería y Presencia Extensible ( XMPP ) es un protocolo de comunicaciones para middleware orientado a mensajes basado en el Lenguaje de Marcado Extensible ( XML ). Diseñado para ser extensible, el protocolo también se ha utilizado para sistemas de publicación-suscripción, señalización para VoIP, vídeo, transferencia de archivos, juegos, aplicaciones de Internet de las Cosas como la red eléctrica inteligente y servicios de redes sociales. A diferencia de la mayoría de los protocolos de mensajería instantánea, XMPP se define en un estándar abierto y utiliza un enfoque de sistemas abiertos para su desarrollo y aplicación, lo que permite que cualquier persona implemente un servicio XMPP e interopere con las implementaciones de otras organizaciones. Dado que XMPP es un protocolo abierto, las implementaciones pueden desarrollarse utilizando cualquier licencia de software; si bien muchas implementaciones de servidor, cliente y biblioteca se distribuyen como software libre y de código abierto , también existen numerosas implementaciones de software libre y propietario. El Grupo de Trabajo de Ingeniería de Internet (IETF) formó un grupo de trabajo de XMPP en 2002 para formalizar los protocolos centrales como una tecnología de mensajería instantánea y presencia del IETF. El grupo de trabajo de XMPP elaboró ​​cuatro especificaciones (RFC 3920, RFC 3921, RFC 3922, RFC 3923), que fueron aprobadas como Estándares Propuestos en 2004. En 2011, RFC 3920 y RFC 3921 fueron reemplazadas por RFC 6120 y RFC 6121, respectivamente, especificando RFC 6122 el formato de dirección XMPP. Además de estos protocolos centrales estandarizados en el IETF, la Fundación de Estándares XMPP (anteriormente Fundación de Software Jabber) participa activamente en el desarrollo de extensiones XMPP abiertas. Según la Fundación de Estándares XMPP, el software basado en XMPP se implementa ampliamente en Internet y constituye la base del Marco de Capacidades Unificadas del Departamento de Defensa (DoD). [ 8 ]

El entorno de programación Java EE proporciona una API estándar llamada Java Message Service (JMS), que es implementada por la mayoría de los proveedores de MOM y cuyo objetivo es ocultar las implementaciones particulares de la API de MOM; sin embargo, JMS no define el formato de los mensajes que se intercambian, por lo que los sistemas JMS no son interoperables.

Un esfuerzo similar se está realizando con el proyecto OpenMAMA , que se encuentra en constante evolución y cuyo objetivo es proporcionar una API común, especialmente para clientes C. A fecha de agosto de 2012, resulta principalmente adecuado para distribuir datos orientados al mercado (por ejemplo, cotizaciones bursátiles) a través de middleware de publicación-suscripción.

Cola de mensajes

Las colas de mensajes permiten el intercambio de información entre aplicaciones distribuidas. Una cola de mensajes puede residir en memoria o en almacenamiento en disco. Los mensajes permanecen en la cola hasta que un consumidor del servicio los procesa. Gracias a la cola de mensajes, las aplicaciones pueden implementarse de forma independiente; no necesitan conocer la posición de las demás ni implementar procedimientos para evitar la espera de recibir mensajes. [ 9 ]

Véase también

Referencias

  1. Curry, Edward (2004). Middleware orientado a mensajes .En Middleware for Communications, ed. Qusay H Mahmoud, 1-28. Chichester, Inglaterra: John Wiley and Sons. doi : 10.1002/0470862084.ch1 . ISBN 978-0-470-86206-3
  2. 1 2 Middleware orientado a mensajes .
  3. 1 2 Arquitectura común del agente de solicitudes de objetos .
  4. "E. Curry, D. Chambers y G. Lyons, "Extending Message-Oriented Middleware using Interception", presentado en el Tercer Taller Internacional sobre Sistemas Distribuidos Basados ​​en Eventos (DEBS '04), ICSE '04, Edimburgo, Escocia, Reino Unido, 2004" (PDF) . Archivado del original (PDF) el 26 de julio de 2011. Consultado el 9 de agosto de 2011 .
  5. 1.0 se convierte en estándar OASIS . AMQP (31/10/2012). Consultado el 23/05/2014.
  6. «ISO/IEC 19464:2014» . ISO .
  7. Servicio de distribución de datos para sistemas en tiempo real (DDS), Object Management Group, versión 1.2, enero de 2007
  8. Archivado el 23 de mayo de 2013 en Wayback Machine .
  9. "MQ – Introducción al middleware orientado a mensajes e IBM MQ" . itgix.com . 30 de agosto de 2018.
  10. OASIS AMQP versión 1.0, secciones 2.6.7-2.6.8". Comité Técnico de OASIS AMQP. Consultado el 18 de junio de 2012.
  11. Johansson, Leif (18 de abril de 2005). "XMPP como MOM". Simposio de Middleware del Gran Nórdico (GNOMIS). Oslo: Universidad de Estocolmo.
  12. "Especificación del protocolo STOMP, versión 1.2" . stomp.github.io . 22 de octubre de 2012.
  13. ¿Eres blando en el medio? El futuro de la TI empresarial reside en las aplicaciones de hardware. Archivado el 9 de febrero de 2009 en Wayback Machine.
  14. ORB express para matrices de puertas programables en campo ( FPGA )
  • Fundamentos para desarrolladores de IBM MQ .
  • ORBexpress: Una visión general .