Asynchronous Message Communication Pattern
Patrón de Comunicación por Mensajes Asíncronos
El patrón de comunicación por mensajes asíncronos (Asynchronous Message Communication Pattern en inglés) es un enfoque de interacción entre componentes de software que se diferencia del tradicional Llamada/Retorno por su naturaleza desacoplada en el tiempo. En este patrón, un componente (el productor) envía un mensaje a otro componente (el consumidor) sin esperar una respuesta inmediata. El mensaje se almacena en un intermediario, como un agente de mensajes o una cola de mensajes, y el consumidor lo procesa más tarde de forma independiente.
La figura 1 es un diagrama de comunicación de una instancia UML porque muestra un escenario particular que consiste en un productor que envía un mensaje asíncrono a un consumidor. En los diagramas de comunicación UML como los de la Figura 1, el patrón de comunicación de mensajes asincrónicos utiliza la notación UML para la comunicación asincrónica (línea con punta de flecha).
Principios clave:
Desacople temporal: El productor y el consumidor no necesitan estar disponibles simultáneamente. El productor envía el mensaje y continúa con su ejecución sin esperar la respuesta del consumidor.
Escalabilidad: El patrón permite un procesamiento más escalable, ya que los mensajes se pueden almacenar y procesar de forma asincrónica, evitando cuellos de botella en el sistema.
Fiabilidad: El uso de intermediarios como colas de mensajes garantiza la entrega confiable de los mensajes, incluso si el consumidor no está disponible temporalmente.
Flexibilidad: El patrón permite diferentes estilos de comunicación, como notificaciones unidireccionales (el productor envía un mensaje y no espera respuesta) o solicitudes con eventual respuesta (el productor envía una solicitud y espera una respuesta en algún momento, pero puede continuar sin esperar).
Beneficios:
- Mayor rendimiento: El procesamiento desacoplado evita que el productor se bloquee esperando la respuesta del consumidor, mejorando el rendimiento general del sistema.
- Mayor disponibilidad: Los componentes pueden fallar o estar sobrecargados sin afectar la entrega de mensajes, aumentando la disponibilidad del sistema.
- Mayor escalabilidad: El sistema se puede escalar horizontalmente agregando más productores o consumidores para manejar mayores cargas de trabajo.
- Mayor tolerancia a fallos: Las colas de mensajes garantizan la entrega de mensajes incluso si el consumidor no está disponible temporalmente.
Ejemplos comunes:
Microservicios: Los microservicios se comunican entre sí mediante mensajes asíncronos, permitiendo un desarrollo y despliegue independientes.
Procesamiento por lotes: Los trabajos se pueden enviar a una cola de mensajes y procesarse de forma asincrónica, mejorando el rendimiento y la eficiencia de los procesos por lotes.
Notificaciones: Las notificaciones se pueden enviar a los usuarios mediante mensajería asíncrona, evitando que el sistema se bloquee por la entrega de notificaciones.
El patrón de comunicación por mensajes asíncronos es una opción valiosa para arquitecturas de software desacopladas, escalables y tolerantes a fallos. Sin embargo, también implica una mayor complejidad en el diseño y la implementación del sistema.
Ejemplo.
Un ejemplo del patrón de comunicación de mensajes asíncronos en un entorno distribuido se proporciona en el diagrama de comunicación genérico que se muestra en la Figura 2 para el sistema de vehículo guiado automatizado, en el que toda la comunicación entre los componentes es asíncrona. Tanto el proxy del sistema de supervisión como el componente del sensor de llegada envían mensajes asincrónicos al control del vehículo, que se ponen en cola por orden de entrada. El control del vehículo tiene una cola de mensajes de entrada desde la cual recibe el mensaje que llega primero, el mensaje de movimiento o el mensaje que llega.
Comentarios
Publicar un comentario