Kommunikation ist der Schlüssel. Vor allem, wenn es sich um eine verteilte Anwendung mit vielen Transaktionen handelt, an der Tausende von lose gekoppelten Einheiten beteiligt sind. In diesem Fall besteht ein dringender Bedarf an skalierbarer und flexibler Kommunikation zwischen verschiedenen Modulen, damit Ihre Anwendung ohne veraltete Informationen reibungslos läuft.
Da sich neu entstehende Anwendungen auf die auf Microservices basierende Architektur verlagern, sind hier einige grundlegende Fragen, die Sie beim Entwerfen der unterstützenden Kommunikationsarchitektur relevanter Anwendungen berücksichtigen müssen.
- Ist es skalierbar?
- Ist es zuverlässig?
- Ist es speichereffizient?
NCache ist ein verteilter In-Memory-Cache, der weit verbreitet ist, um die Leistung von Microservices-basiertem .NET/ zu verbessern. .NET Core um weitere Anwendungsbeispiele zu finden. NCache bietet jetzt eine Publisher-Subscriber-Funktion (Pub/Sub), um ein ereignisgesteuertes Messaging-Paradigma für diese Anwendungen zu ermöglichen.
NCache Details NCache Pub / Sub NCache Docs
Introducing... NCache Pub / Sub
NCache bietet ein In-Memory-Pub/Sub-Messaging, um den Informationsaustausch in Echtzeit in .NET-Webanwendungen zu ermöglichen. Das Pub/Sub-Modell entkoppelt Publisher und Abonnenten auf natürliche Weise, indem es einen Kanal bereitstellt, auf dem Nachrichten veröffentlicht und von den interessierten Benutzern abonniert werden. Jetzt, wenn NCache als Messaging-Bus fungiert, profitiert das Pub/Sub-Modell vom zugrunde liegenden NCache verteilte Architektur und zahlreiche handliche Funktionen. Wir werden sehen, wie das kombiniert wird NCache und Pub/Sub können die oben genannten Herausforderungen bewältigen und letztendlich dazu beitragen, dass Ihre Anwendungen besser kommunizieren.
Du kannst das ... sehen Kernbestandteile von NCache Pub / Sub um die Grundlagen dieser Funktion zu verstehen. Lassen Sie uns ohne weitere Umschweife zunächst sehen, wie Sie Dinge erledigen können, um das Pub/Sub-Messaging zu nutzen.
So wird es genutzt NCache Pub/Sub-Messaging
Angenommen, Sie haben eine E-Commerce-Anwendung, bei der Sie über jedes neue Produkt benachrichtigt werden müssen, das dem Geschäft hinzugefügt wird. Da es mit erreicht werden kann NCache Pub/Sub, müssen Sie zuerst einen Cache erstellen. Es wird empfohlen, einen dedizierten Cache für Pub/Sub zu haben. Als Nächstes besprechen wir den schrittweisen Prozess zum Erstellen eines Themas zum Erhalten von Benachrichtigungen, die für neue Produkte relevant sind, zum Veröffentlichen von Nachrichten und zum Abonnieren von Nachrichten.
NCache Details NCache Pub / Sub NCache Docs
Erstellen Sie ein Thema
NCache bietet ein ITopic
-Schnittstelle, um ein Thema mit einem eindeutigen Namen zu erstellen. So kann Ihre Publisher-Anwendung ein Thema mit dem Namen erstellen Neue Produkte mit der Methode 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); |
Wenn das Thema bereits vorhanden ist, wird eine Instanz des Themas als zurückgegeben ITopic
.
Es kann vorkommen, dass bestimmte Ereignisse wichtiger sind und sofort kommuniziert werden müssen, wenn sie eintreten. Zum Beispiel kann es für Verkäufer/Käufer am wichtigsten sein, über fertige Waren/Produkte zum Verkauf benachrichtigt zu werden. In diesem Fall können Sie festlegen Themenpriorität zu hoch, während Sie das Thema erstellen, und erhalten Sie die entsprechenden Benachrichtigungen ohne Wartezeit.
Nachrichten veröffentlichen
Nachdem ein Thema erstellt wurde, kann die Publisher-Anwendung relevante Nachrichten zu diesem Thema veröffentlichen Publish
Methode. Dazu erhalten Sie zunächst eine Instanz des Themas, indem Sie den Namen des Themas angeben. Der folgende Code zeigt, wie Sie eine für ein neues Produkt relevante Nachricht zu einem bereits vorhandenen Thema veröffentlichen können Neue Produkte.
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); |
Als Herausgeber müssen Sie je nach Anwendungsszenario möglicherweise bestimmte Nachrichten senden oder an beliebige Personen zustellen. Wenn beispielsweise der Preis eines Produkts aktualisiert wird, sollten alle Abonnenten benachrichtigt werden. Dies ist jedoch möglicherweise nicht immer der Fall. Vor diesem Hintergrund kann der Übermittlungsmodus beim Veröffentlichen von Nachrichten angegeben werden. Die folgenden zwei Nachrichtenübermittlungsoptionen werden bereitgestellt von NCache Pub / Sub.
- Alle (Standard): Liefert die Nachricht an alle registrierten Abonnenten.
- Jedes: Liefert die Nachricht an einen der registrierten Abonnenten.
See Lieferoptionen für weitere Informationen an.
Um den Speicherplatz Ihres Pub/Sub-Cache effizient zu verwalten, können Sie außerdem Folgendes festlegen: Ablaufzeiten für Nachrichten.
Abonnieren Sie ein Thema
Nachdem eine Nachricht für ein Thema veröffentlicht wurde, erstellt Ihre Abonnentenanwendung ein Abonnement für dieses Thema, um Nachrichten mithilfe von zu erhalten CreateSubscription
Methode. Der folgende Code zeigt, wie eine Abonnentenanwendung ein Abonnement für das Thema erstellen kann Neue Produkte mit MessageReceived
Ruf zurück.
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); |
Angenommen, die Abonnentenanwendung muss Produktpreise beim Empfang von Verkaufsbenachrichtigungen aktualisieren. Dann kann die beabsichtigte Preisaktualisierungsoperation in durchgeführt werden MessageReceived
Ruf zurück.
Ein im obigen Beispiel erstelltes Abonnement ist nicht dauerhaft und die Abonnements sind standardmäßig nicht dauerhaft. Außerdem können Sie auch Erstellen Sie ein dauerhaftes Abonnement Verwendung der NCache IDurableTopicSubscription
Schnittstelle. Im Falle eines dauerhaften Abonnements NCache behält das Abonnement eines Teilnehmers bei einem Verbindungsverlust. Das bedeutet, dass die zu einem Thema veröffentlichten Nachrichten dem Abonnement zugeordnet werden, auch wenn der Abonnent offline ist. Daher kann der Teilnehmer diese Nachrichten beim Wiederverbinden empfangen.
Außerdem können Sie einzelne/mehrere Themen abonnieren, die unter das bereitgestellte Muster fallen, indem Sie das verwenden musterbasierte Abonnementmethode woher NCache unterstützt mehrere Platzhalter.
Benachrichtigungen registrieren
Als Herausgeber müssen Sie möglicherweise den Status von Nachrichten und die Verfügbarkeit von Themen kennen. Sehen wir uns an, für welche Art von Benachrichtigungen sich Ihre Publisher-Anwendungen während der Verwendung registrieren können NCache Pub/Sub-Nachrichten.
MessageDeliveryFailure:
um benachrichtigt zu werden, wenn die Nachricht aufgrund eines Problems nicht zugestellt werden konnte.OnTopicDeleted:
um benachrichtigt zu werden, wenn ein Thema gelöscht wird.
So einfach kann sich der Verlag für diese beiden Benachrichtigungsarten anmelden.
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; |
Warum NCache Pub/Sub für verteiltes Messaging?
Bis hierhin kennen wir uns aus NCache Pub/Sub-Funktion. Nun, welche Vorteile hat Ncache Pub/Sub bietet an, die anfänglich aufgeworfenen Fragen zu bearbeiten?
- NCache bietet lineare Skalierbarkeit wodurch Ihre Anwendung die steigende Anzahl von Abonnementanfragen nahtlos verarbeiten kann.
- NCache sorgt für die hohe Verfügbarkeit von NCache das die Konnektivität der Teilnehmer in dynamischen Umgebungen berücksichtigt.
- NCache ermöglicht den Ablauf und die Räumung von Elementen, die sich im Cache befinden, um den Speicherplatz intelligent zu verwalten.
Daher machen die oben genannten Funktionen zusammen mit der losen Kopplung und dem asynchronen Messagingmodus von Pub/Sub NCache Die Pub/Sub-Funktion ist sehr vielversprechend für verteiltes Messaging in Ihren zukünftigen .Net-Anwendungen.