¿Qué es la mensajería de publicación y suscripción?
La mensajería de publicación y suscripción es un modelo de comunicación asíncrona que facilita a los desarrolladores la creación de aplicaciones de gran funcionalidad y compleja arquitectura en la nube. En la arquitectura de la nube moderna, las aplicaciones se desacoplan en bloques pequeños e independientes llamados servicios. La mensajería de publicación y suscripción brinda notificaciones de eventos instantánea para dichos sistemas distribuidos. Admite una comunicación escalable y fiable entre módulos de software independientes.
¿Cómo funciona la mensajería de publicación y suscripción?
El sistema de publicación y suscripción tiene cuatro componentes clave.
Mensajes
Un mensaje son datos de comunicación enviados de un emisor a un receptor. Los tipos de datos de los mensajes pueden ser desde cadenas hasta objetos complejos que representen texto, video, datos de sensores, audio u otros contenidos digitales.
Temas
Todos los mensajes tienen un tema asociado. El tema actúa como un canal intermediario entre emisores y receptores. Mantiene una lista de receptores interesados en mensajes sobre ese tema.
Suscriptores
Un suscriptor es el destinatario de un mensaje. Los suscriptores tienen que registrarse (o suscribirse) a temas de interés. Pueden realizar distintas funciones o hacer algo diferente con el mensaje de forma paralela.
Emisores
El emisor es el componente que envía los mensajes. Crea mensajes sobre un tema y los envía una sola vez a todos los suscriptores de ese tema. Esta interacción entre el emisor y los suscriptores es una relación de uno a varios. El emisor no necesita saber quién utiliza la información que difunde, y los suscriptores no necesitan saber de dónde procede el mensaje.
¿Qué características tiene un sistema de mensajería de publicación y suscripción?
Las aplicaciones desarrolladas con un patrón de publicación y suscripción tienen una lógica de aplicación y otra de comunicación distintas. La infraestructura de mensajería desacopla la entrega de mensajes entre emisores y suscriptores y los difunde a distintos suscriptores de forma asíncrona.
El sistema de comunicación de publicación y suscripción tiene las siguientes características clave.
Entrega push
La mensajería de publicación y suscripción envía instantáneamente notificaciones de eventos asíncronas cuando se publican mensajes sobre el tema del mensaje. Los suscriptores reciben una notificación cuando hay un mensaje disponible.
Protocolos de entrega múltiples
Los temas se conectan a varios tipos de puntos de conexión, como colas de mensajes, funciones sin servidor, servidores HTTP y direcciones de correo electrónico.
Más información sobre las colas de mensajes con AWS »
Distribución ramificada
Este escenario ocurre cuando un mensaje se envía a un tema y luego se replica y transmite a varios puntos de conexión. La distribución ramificada proporciona notificaciones de eventos asíncronas, que a su vez permiten el procesamiento en paralelo.
Filtrado
La característica de filtrado permite al suscriptor crear una política de filtrado de mensajes. Así, solo recibirá las notificaciones que le interesen, en lugar de recibir todos y cada uno de los mensajes publicados en el tema.
Multiplexación
En algunos casos, los emisores también pueden ser suscriptores. Puede multiplexar flujos de mensajes y crear sistemas que se enlacen entre sí de forma coherente desde el punto de vista interno.
¿Qué ventajas tiene la mensajería de publicación y suscripción?
El modelo de publicación y suscripción permite una arquitectura basada en eventos, necesaria en muchas aplicaciones actuales. Puede usar eventos para activar y establecer comunicación entre servicios desacoplados. Un evento es un cambio de estado o una actualización, como la colocación de un artículo en un carrito de la compra.
La mensajería de publicación y suscripción ofrece ventajas significativas a los desarrolladores que crean aplicaciones basadas en eventos en tiempo real. A continuación exponemos algunas de sus ventajas.
Eliminación de los sondeos
Los temas de los mensajes permiten una entrega instantánea basada en push, de modo que se elimina la necesidad de que los destinatarios de los mensajes comprueben periódicamente, o sondeen, la existencia de nueva información y actualizaciones. Así se acelera el tiempo de respuesta y se reduce la latencia de entrega, que puede ser especialmente problemática en sistemas en los que no se toleran los retrasos.
Focalización dinámica
El patrón de publicación y suscripción hace que el proceso de descubrimiento de servicios sea más fácil, natural y menos propenso a errores. En lugar de mantener una lista de pares para que una aplicación pueda enviar mensajes, un emisor se limita a publicar mensajes en un tema. A continuación, cualquier parte interesada suscribe su punto de conexión al tema y empieza a recibir dichos mensajes. Múltiples suscriptores pueden cambiarse, actualizarse o desaparecer, y el sistema se ajusta dinámicamente.
Desacoplamiento y escalado independientes
El modelo de publicación y suscripción hace que el software sea más flexible. Los emisores y los suscriptores están desacoplados y funcionan independientemente unos de otros, lo que le permite un desarrollo y una ampliación independientes. Puede decidir gestionar los pedidos de una manera este mes y de otra al mes siguiente. El hecho de agregar o modificar funciones no provocará un efecto dominó en todo el sistema, ya que el modelo de publicación y suscripción permite flexibilizar el funcionamiento del conjunto.
Simplificación de la comunicación
El código para las comunicaciones y la integración es uno de los más difíciles de escribir. El modelo de publicación y suscripción reduce la complejidad al eliminar todas las conexiones entre puntos con una única conexión a un tema de mensaje. El tema administrará las suscripciones para decidir qué mensajes deben entregarse a qué puntos de conexión. Un menor número de llamadas de retorno se traduce en un acoplamiento más flexible y en un código más fácil de mantener y ampliar.
Durabilidad
Los servicios de mensajería de publicación y suscripción suelen ofrecer una durabilidad muy alta y al menos una entrega, al almacenar copias del mismo mensaje en varios servidores.
Seguridad
Los temas de los mensajes autentican las aplicaciones que intentan publicar contenidos y permiten utilizar puntos de conexión cifrados para proteger los mensajes en tránsito por la red.
¿Para qué sirve la mensajería de publicación y suscripción?
A continuación se describen los casos de uso más comunes del sistema de mensajería de publicación y suscripción.
Procesamiento asíncrono paralelo
Los eventos publicados en el tema de un mensaje pueden desencadenar que varios trabajadores realicen simultáneamente tareas necesarias pero no relacionadas.
Alertas de aplicaciones y sistemas
Entregue al instante actualizaciones críticas y notificaciones de eventos asíncronos a los componentes de la aplicación afectados y a sus usuarios.
Administración de flujos de trabajo asíncronos
Transmita eventos entre aplicaciones, transfiera datos entre almacenes de datos, actualice cachés distribuidas o actualice registros en sistemas empresariales.
Equilibrio de las cargas de trabajo
Agrupe tareas para procesarlas en bloque o divida una tarea más grande en muchas más pequeñas y utilice las colas de mensajes para dividir el trabajo entre varios trabajadores.
Registro en varios sistemas
Registre eventos para analizarlos más tarde, capture registros para operaciones y seguridad, o archívelos para cumplir los requisitos de las copias de seguridad o del cumplimiento de normativas.
Uso de la distribución ramificada para la replicación
Replique datos entre entornos de producción y desarrollo, o desarrolle y realice pruebas con datos en tiempo real.
Coordinación de aplicaciones sin servidor
Distribuya de forma ramificada notificaciones de eventos asíncronos a funciones distribuidas y colas de mensajes para coordinar los componentes de su aplicación sin servidor.
Transmisión de datos de IoT
El patrón de publicación y suscripción es un método muy eficaz de interacción entre dispositivos del Internet de las cosas (IoT). Los dispositivos pueden transmitir fácilmente datos a sistemas backend o entre ellos mismos.
¿Cuál es la diferencia entre las colas de mensajes y la mensajería de publicación y suscripción?
Una cola de mensajes es otra forma de comunicación asíncrona que se utiliza en arquitecturas sin servidor y en microservicios. Los mensajes se almacenan en la cola hasta que se procesan y se eliminan. Las colas de mensajes requieren que el emisor sepa con quién intercambia mensajes. La clasificación de los mensajes también puede provocar cuellos de botella en el sistema.
En cambio, el modelo de publicación y suscripción ofrece más flexibilidad. Los suscriptores interesados pueden recibir mensajes de forma simultánea y asíncrona. Los emisores no necesitan saber quiénes son los suscriptores. La gestión de mensajes es más escalable y fiable, y ofrece un mejor rendimiento.
¿Cómo puede AWS dar soporte a sus requisitos de mensajería de publicación y suscripción?
Amazon Web Services (AWS) dispone de dos servicios que puede utilizar para diferentes aplicaciones de publicación y suscripción.
API de publicación y suscripción
AWS AppSync es un servicio totalmente administrado para crear API de GraphQL y publicación y suscripción sin servidor que simplifican el desarrollo de aplicaciones. Puede crear un único punto de conexión para consultar, actualizar o publicar datos de forma segura.
Las API de publicación y suscripción creadas con AWS AppSync ofrecen la posibilidad de publicar actualizaciones de datos en tiempo real a clientes de API suscritos a través de conexiones WebSocket sin servidor. Puede crear experiencias atractivas en tiempo real para una gran variedad de aplicaciones. Por ejemplo, puede ofrecer resultados actualizados de partidos, datos financieros, participación del público, votaciones o funciones de localización, como mapas y marketing mediante notificaciones push.
Estas son algunas de las cosas que se pueden llevar a cabo con AWS AppSync:
- Acceder a datos de uno o más orígenes o microservicios con una única solicitud de red
- Interactuar y actualizar datos (incluso sin conexión) con sincronización de datos, control de versiones y resoluciones de conflictos sin conexión
- Pagar solo por las solicitudes a su API y por los mensajes en tiempo real entregados a los clientes conectados
Mensajería de publicación y suscripción
Amazon Simple Notification Service (SNS) facilita la creación de una aplicación que utilice el modelo de mensajería de publicación y suscripción. Puede enviar mensajes desde sus aplicaciones a clientes u otras aplicaciones de forma escalable y rentable.
Amazon SNS ofrece varias características:
- Mensajería de varios a varios de alto rendimiento basada en push entre sistemas distribuidos, microservicios y aplicaciones sin servidor basadas en eventos
- Cifrado de mensajes y privacidad del tráfico
- Capacidades de distribución ramificada en todas las categorías de AWS, como análisis, computación, contenedores, bases de datos, Internet de las cosas (IoT), machine learning (ML), seguridad y almacenamiento
Para comenzar a usar el modelo de publicación y suscripción en AWS, cree una cuenta de AWS gratuita hoy mismo.
Siguientes pasos en AWS
Obtenga acceso instantáneo al nivel Gratuito de AWS.
Comience a crear en la consola de administración de AWS.