Editor-Suscriptor (patrón de diseño)

La versión actual de la página aún no ha sido revisada por colaboradores experimentados y puede diferir significativamente de la versión revisada el 19 de septiembre de 2017; las comprobaciones requieren 7 ediciones .

Un  editor -suscriptor o pub / sub es un patrón de diseño de mensajes de comportamiento en el que los remitentes de mensajes,  llamados editores , no están vinculados directamente a los suscriptores por .el código de mensajes En cambio, los mensajes se dividen en clases y no contienen información sobre sus suscriptores, si los hay. De manera similar, los suscriptores tratan con una o más clases de mensajes, abstrayéndose de editores específicos.   

El patrón publicador-suscriptor es una extensión del patrón observador que agrega una descripción de un canal de eventos diseñado específicamente para la notificación de eventos [1] . 

El patrón publicador-suscriptor, junto con el concepto relacionado de una cola de mensajes, es parte del juego de herramientas de middleware controlado por eventos de un sistema grande. La mayoría de los sistemas de mensajería admiten un modelo de publicación y suscripción y una cola de mensajes en su API . Un ejemplo de tal sistema sería el Java Message Service (JMS) [1] .

Este patrón proporciona una mayor escalabilidad y una topología de red más dinámica .

Filtrado de mensajes

En un modelo de editor-suscriptor, los suscriptores normalmente reciben solo un subconjunto de todos los mensajes publicados. El proceso de seleccionar mensajes para recibir y procesarlos se denomina filtrado . Hay dos formas principales de filtrado: basado en temas y basado en contenido . 

En un sistema basado en temas, los mensajes se publican en "temas" o canalizaciones lógicas con nombre. Los suscriptores de dichos sistemas recibirán todos los mensajes publicados en los temas a los que se suscribieron, y todos los suscriptores que se suscriban al mismo tema recibirán los mismos mensajes. El editor es responsable de determinar las clases de mensajes a las que se suscriben los suscriptores.

En un sistema basado en contenido , los mensajes se entregan a los suscriptores solo si el suscriptor acepta los atributos o el contenido de esos mensajes. En este sistema, el suscriptor es responsable de clasificar los mensajes.

Algunos sistemas son un híbrido entre los dos: un editor envía mensajes a un tema, mientras que los suscriptores registran una suscripción basada en contenido para uno o más temas.

Topología

En muchas implementaciones del patrón publicador-suscriptor, el publicador envía mensajes a un intermediario, que puede ser un intermediario de mensajes o un bus. En tal caso, los suscriptores registran una suscripción con este intermediario de filtrado. El intermediario normalmente realiza el almacenamiento y el reenvío de mensajes para enrutar el mensaje del editor al suscriptor. Además, un intermediario puede priorizar los mensajes en una cola de mensajes antes de enrutarlos.

Los suscriptores pueden suscribirse a mensajes específicos en el momento de la codificación, durante la inicialización de la aplicación o en tiempo de ejecución. En los sistemas con una interfaz gráfica de usuario, los suscriptores pueden suscribirse manualmente mediante comandos (como presionar un botón). Algunos marcos y software utilizan archivos de configuración en formato XML o JSON para la suscripción , dichos archivos se leen durante la inicialización. Otros sistemas de software pueden agregar o eliminar una suscripción en tiempo de ejecución, como activadores de base de datos o RSS .

La mayoría de los sistemas distribuidos en tiempo real de DDS no utilizan intermediarios. En cambio, cada editor y suscriptor comparten metadatos entre sí. El editor y el suscriptor almacenan en caché esta información localmente y enrutan los mensajes en función de esta información.

Historia

El patrón editor-suscriptor fue presentado públicamente por primera vez en 1987 por la Association for Computing Machinery (ACM) en el Simposio de Principios de Sistemas Operativos en SOSP '87, en el artículo "Aplicación de sincronía virtual a sistemas distribuidos". 123-138” [2] como parte del subsistema de noticias Isis Toolkit.

Véase también

Notas

  1. 1 2 Hohpe, G. y Woolf, B. Patrones de integración empresarial: diseño, creación e implementación de soluciones de mensajería. - Pearson Education, 2012. - Pág. 106. - ISBN 9780133065107 .
  2. Birman, K. y Joseph, T. " Explotando la sincronía virtual en sistemas distribuidos " en Actas del undécimo Simposio ACM sobre principios de sistemas operativos (SOSP '87) , 1987. págs. 123-138.

Literatura