La communication est la clé. Surtout, lorsqu'il y a une application distribuée à transactions élevées avec des milliers d'entités faiblement couplées impliquées. Dans ce cas, il existe un besoin urgent d'une communication évolutive et flexible entre les différents modules pour assurer le bon fonctionnement de votre application sans informations obsolètes.
Étant donné que les nouvelles applications émergentes passent à l'architecture basée sur les microservices, voici quelques questions fondamentales que vous devez prendre en compte lors de la conception de l'architecture de communication de support des applications pertinentes.
- Est-il évolutif?
- Est-il fiable?
- Le stockage est-il efficace ?
NCache est un cache distribué en mémoire qui a été largement adopté pour améliorer les performances de .NET/ basé sur des microservices .NET Core applications. NCache fournit désormais une fonctionnalité Publisher-Subscriber (Pub/Sub) pour activer un paradigme de messagerie événementielle pour ces applications.
NCache Détails NCache Pub / Sous-marin NCache Docs
Léger NCache Pub / Sous-marin
NCache fournit une messagerie Pub/Sub en mémoire pour permettre le partage d'informations en temps réel dans les applications Web .NET. Le modèle Pub/Sub dissocie naturellement les éditeurs et les abonnés en fournissant un canal où les messages sont publiés et souscrits par les utilisateurs intéressés. Maintenant, quand NCache agit comme un bus de messagerie, le modèle Pub/Sub bénéficie du sous-jacent NCache architecture distribuée et de nombreux à portée de main Caractéristiques. Nous verrons comment combiner NCache et Pub/Sub peuvent relever les défis ci-dessus et éventuellement aider vos applications à mieux communiquer.
Tu peux voir la composants de base de NCache Pub / Sous-marin pour comprendre les bases de cette fonctionnalité. Sans plus tarder, voyons d'abord comment faire avancer les choses pour utiliser la messagerie Pub/Sub.
UTILISATION NCache Messagerie Pub/Sub
Supposons que vous disposiez d'une application de commerce électronique dans laquelle vous devez être informé de chaque nouveau produit ajouté au magasin. Puisqu'il peut être obtenu en utilisant NCache Pub/Sub, vous devez d'abord créer un cache. Il est recommandé d'avoir un cache dédié pour Pub/Sub. Ensuite, nous discutons du processus étape par étape de création d'un sujet pour obtenir des notifications relatives aux nouveaux produits, publier des messages et s'abonner aux messages.
NCache Détails NCache Pub / Sous-marin NCache Docs
Créer un sujet
NCache fournit un ITopic
interface pour créer un sujet avec un nom unique. Voici comment votre application d'éditeur peut créer un sujet avec le nom Nouveaux produits en utilisant la méthode 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 le sujet existe déjà, une instance du sujet est renvoyée sous la forme ITopic
.
Il peut arriver que certains événements soient plus importants et nécessitent d'être communiqués dès qu'ils se produisent. Par exemple, être informé des produits finis/produits en vente peut être le plus important en tant que vendeur/acheteur. Dans ce cas, vous pouvez définir priorité du sujet à élevé lors de la création du sujet, et recevez les notifications pertinentes sans aucune attente.
Publier des messages
Une fois qu'un sujet est créé, l'application de l'éditeur peut publier des messages pertinents sur ce sujet à l'aide de Publish
méthode. Pour cela, vous obtenez d'abord une instance du sujet en fournissant le nom du sujet. Le code suivant montre comment vous pouvez publier un message concernant un nouveau produit dans un sujet déjà existant Nouveaux produits.
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); |
En tant qu'éditeur, vous devrez peut-être diffuser certains messages ou en livrer à n'importe qui en fonction du scénario de l'application. Par exemple, si le prix d'un produit est mis à jour, tous les abonnés doivent en être informés. Cependant, cela peut ne pas toujours être le cas. En gardant cela à l'esprit, le mode de livraison peut être spécifié lors de la publication des messages. Les deux options de livraison de message suivantes sont fournies par NCache Pub / Sub.
- Tous (défaut): Fournit le message à tous les abonnés enregistrés.
- Toutes: Fournit le message à l'un des abonnés enregistrés.
See options de livraison pour plus de détails.
De plus, pour gérer efficacement l'espace de stockage de votre cache Pub/Sub, vous pouvez également définir expirations pour les messages.
S'abonner à un sujet
Une fois qu'un message a été publié sur un sujet, votre application d'abonnement crée un abonnement sur ce sujet pour recevoir des messages à l'aide de la CreateSubscription
méthode. Le code ci-dessous montre comment une application d'abonné peut créer un abonnement pour le sujet Nouveaux produits avec MessageReceived
rappeler.
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); |
Supposons que l'application d'abonné doive mettre à jour les prix des produits lors de la réception des notifications de vente. Ensuite, l'opération de mise à jour de prix prévue peut être effectuée dans le MessageReceived
rappeler.
Un abonnement créé dans l'exemple ci-dessus est non durable et les abonnements sont non durables par défaut. De plus, vous pouvez également créer un abonnement durable utilisant l' NCache IDurableTopicSubscription
interface. En cas d'abonnement durable, NCache conserve l'abonnement d'un abonné en cas de perte de connexion. Cela signifie que les messages publiés sur un sujet sont affectés à l'abonnement même si l'abonné est hors ligne. Ainsi, l'abonné peut recevoir ces messages lors de la reconnexion.
De plus, vous pouvez vous abonner à des sujets uniques/multiples relevant du modèle fourni en utilisant le méthode d'abonnement basée sur des modèles De NCache prend en charge plusieurs caractères génériques.
Notifications d'enregistrement
En tant qu'éditeur, vous devrez peut-être connaître l'état des messages et la disponibilité des sujets. Voyons à quels types de notifications vos applications d'éditeur peuvent s'inscrire lorsqu'elles utilisent NCache Messagerie Pub/Sub.
MessageDeliveryFailure:
pour être averti si le message n'a pas été livré en raison d'un problème.OnTopicDeleted:
pour être averti lorsqu'un sujet est supprimé.
Voici comment simplement l'éditeur peut s'inscrire à ces deux types de notifications.
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; |
Constat NCache Pub/Sub pour la messagerie distribuée ?
Jusqu'à présent, nous sommes familiers avec le NCache Fonction Pub/Sub. Maintenant, quels sont les avantages Ncache Pub/Sub propose de répondre aux questions posées au départ ?
- NCache fournit évolutivité linéaire grâce à quoi votre application peut gérer le nombre croissant de demandes d'abonnement de manière transparente.
- NCache assure la haute disponibilité de NCache qui prend en charge la connectivité des abonnés dans des environnements dynamiques.
- NCache permet l'expiration et l'éviction des éléments résidant dans le cache pour gérer intelligemment l'espace de stockage.
Par conséquent, les fonctionnalités ci-dessus ainsi que le couplage lâche et le mode de messagerie asynchrone de Pub/Sub font NCache Fonction Pub/Sub très prometteuse pour la messagerie distribuée dans vos futures applications .Net.