La comunicación es la clave. Especialmente, cuando hay una aplicación distribuida de alta transacción con miles de entidades débilmente acopladas involucradas. En ese caso, existe una gran necesidad de comunicación escalable y flexible entre diferentes módulos para mantener su aplicación funcionando sin problemas y sin información obsoleta.
Dado que las aplicaciones emergentes están cambiando a la arquitectura basada en microservicios, aquí hay algunas preguntas fundamentales que debe tener en cuenta al diseñar la arquitectura de comunicación de respaldo de las aplicaciones relevantes.
- ¿Es escalable?
- ¿Es confiable?
- ¿Es eficiente el almacenamiento?
NCache es un caché distribuido en memoria que se ha adoptado ampliamente para mejorar el rendimiento de .NET/ basado en microservicios. .NET Core aplicaciones. NCache ahora proporciona una función de publicador-suscriptor (Pub/Sub) para habilitar un paradigma de mensajería basado en eventos para estas aplicaciones.
NCache Detalles NCache Pub / Sub NCache Docs
Presentamos: NCache Pub / Sub
NCache proporciona una mensajería Pub/Sub en memoria para permitir el intercambio de información en tiempo real en aplicaciones web .NET. El modelo Pub/Sub desvincula de forma natural a los editores y los suscriptores al proporcionar un canal donde los usuarios interesados publican y suscriben los mensajes. Ahora, cuando NCache actúa como un bus de mensajería, el modelo Pub/Sub se beneficia del subyacente NCache arquitectura distribuida y numerosos prácticos Características. Veremos que como combinar NCache y Pub/Sub pueden abordar los desafíos anteriores y eventualmente ayudar a que sus aplicaciones se comuniquen mejor.
Usted puede ver el componentes centrales de NCache Pub / Sub para entender los conceptos básicos de esta función. Sin más preámbulos, primero veamos cómo hacer las cosas para utilizar la mensajería Pub/Sub.
Instrucciones de uso NCache Mensajería de publicación/suscripción
Suponga que tiene una aplicación de comercio electrónico en la que necesita recibir una notificación de cada nuevo producto agregado a la tienda. Ya que se puede lograr usando NCache Pub/Sub, primero debes crear un caché. Se recomienda tener un caché dedicado para Pub/Sub. A continuación, discutimos el proceso paso a paso de crear un tema para recibir notificaciones relevantes para nuevos productos, publicar mensajes y suscribirse a mensajes.
NCache Detalles NCache Pub / Sub NCache Docs
Crear un tema
NCache proporciona un ITopic
interfaz para crear un tema con un nombre único. Así es como su aplicación de editor puede crear un tema con el nombre nuevos productos usando el método CreateTopic
.
1 2 3 4 5 6 |
// Pre-condition: Cache is already connected // Specify the topic name string topicName = “newProducts” // Create topic ITopic topic = cache.MessagingService.CreateTopic(topicName); |
Si el tema ya existe, se devuelve una instancia del tema como ITopic
.
Puede suceder que ciertos eventos sean más importantes y deban ser comunicados tan pronto como ocurran. Por ejemplo, recibir notificaciones sobre productos/productos terminados en oferta puede ser más importante si se es vendedor/comprador. En ese caso, puede establecer prioridad del tema a alto mientras creas el tema, y recibe las notificaciones relevantes sin esperar.
Publicar mensajes
Una vez que se crea un tema, la aplicación de publicación puede publicar mensajes relevantes para ese tema usando Publish
método. Para eso, primero obtiene una instancia del tema proporcionando el nombre del tema. El siguiente código muestra cómo puede publicar un mensaje relevante para un nuevo producto en un tema ya existente nuevos productos.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
// Pre-condition: Cache is already connected // Topic “newProducts” already created string topicName = “newProducts” // Get the topic ITopic productTopic = cache.MessagingService.GetTopic(topicName); // Create the object to be sent in message Product product = FetchProductFromDB(10248); // Create the new message with the object order var productMessage = new Message(product); // Publish the order with delivery option set as all orderTopic.Publish(productMessage, DeliveryOption.All, true); |
Al ser un editor, es posible que deba transmitir ciertos mensajes o entregarlos según el escenario de la aplicación. Por ejemplo, si se actualiza el precio de un producto, se debe notificar a todos los suscriptores. Sin embargo, esto puede no ser siempre el caso. Teniendo eso en cuenta, el modo de entrega se puede especificar al publicar mensajes. Las siguientes dos opciones de entrega de mensajes son proporcionadas por NCache Pub / Sub.
- Todos (defecto): Entrega el mensaje a todos los suscriptores registrados.
- Alquiler y venta: Entrega el mensaje a cualquiera de los suscriptores registrados.
See opciones de entrega para más información.
Además, para administrar de manera eficiente el espacio de almacenamiento de tu caché de Pub/Sub, también puedes configurar vencimientos de mensajes.
Suscríbete a un tema
Una vez que se ha publicado un mensaje en un tema, su aplicación de suscriptor crea una suscripción en ese tema para recibir mensajes usando el CreateSubscription
método. El siguiente código muestra cómo una aplicación de suscriptor puede crear una suscripción para el tema nuevos productos MessageReceived
llamar de vuelta.
1 2 3 4 5 6 7 8 9 10 |
// Pre-condition: Cache is already connected // Topic “newProducts” already created string topicName = “newProducts” // Get the topic ITopic productTopic = cache.MessagingService.GetTopic(topicName); // Create and register subscribers for topic newProducts // MessageReceived callback is specified ITopicSubscription orderSubscriber = orderTopic.CreateSubscription(MessageReceived); |
Suponga que la aplicación de suscriptor necesita actualizar los precios de los productos al recibir notificaciones de venta. Entonces, la operación de actualización de precio prevista se puede realizar en el MessageReceived
llamar de vuelta.
Una suscripción creada en el ejemplo anterior no es duradera y las suscripciones no son duraderas de forma predeterminada. Además, también puedes crear una suscripción duradera usando el NCache IDurableTopicSubscription
interfaz. En caso de una suscripción duradera, NCache retiene la suscripción de un suscriptor en caso de pérdida de conexión. Significa que los mensajes publicados sobre un tema se asignan a la suscripción incluso si el suscriptor está desconectado. Por lo tanto, el suscriptor puede recibir estos mensajes al volver a conectarse.
Y lo que es más, puede suscribirse a temas únicos/múltiples incluidos en el patrón provisto usando el método de suscripción basado en patrones donde NCache admite múltiples comodines.
Registrar Notificaciones
Al ser un editor, es posible que necesite saber el estado de los mensajes y la disponibilidad de los temas. Veamos para qué tipo de notificaciones pueden registrarse sus aplicaciones de editor mientras usan NCache Mensajería de publicación/suscripción.
MessageDeliveryFailure:
para recibir una notificación si el mensaje no se entregó debido a algún problema.OnTopicDeleted:
para recibir una notificación cuando se elimine un tema.
Así es como el editor puede registrarse para estos dos tipos de notificaciones.
1 2 3 4 5 6 7 |
// You have an instance productTopic of existing topic // Register message delivery failure productTopic.MessageDeliveryFailure += OnFailureMessageReceived; //Register topic deletion notification productTopic.OnTopicDeleted = TopicDeleted; |
¿Por qué NCache ¿Pub/Sub para mensajería distribuida?
Hasta este punto, estamos familiarizados con el NCache Función de publicación/suscripción. Ahora, ¿qué beneficios tiene Ncache ¿Pub/Sub se ofrece a manejar las preguntas planteadas inicialmente?
- NCache proporciona un escalabilidad lineal por lo que su aplicación puede manejar el creciente número de solicitudes de suscripción sin problemas.
- NCache asegura el alta disponibilidad de NCache que acomoda la conectividad de los suscriptores en entornos dinámicos.
- NCache permite la caducidad y los desalojos de los elementos que residen en el caché para administrar de manera inteligente el espacio de almacenamiento.
Por lo tanto, las funciones anteriores, junto con el acoplamiento flexible y el modo de mensajería asincrónica de Pub/Sub, hacen que NCache La función Pub/Sub es muy prometedora para la mensajería distribuida en sus futuras aplicaciones .Net.