Skalierbares .NET Pub/Sub-Messaging mit NCache

Aufgezeichnetes Webinar
Von Ron Hussain und Edward Bator

In diesem Webinar erfahren Sie, wie Sie leistungsstarkes Pub/Sub-Messaging für .NET-Anwendungen mit hohem Datenverkehr nutzen und Leistungsengpässe überwinden können. NCache ist ein skalierbarer verteilter Cache für .NET, der eine Vielzahl von Pub/Sub-Messaging-Funktionen bereitstellt.

Einer unserer leitenden Lösungsarchitekten führt Sie durch alle Pub/Sub-Funktionen und ihre Anwendungsfälle und zeigt Ihnen, wie Sie diese in Ihre .NET-Anwendung integrieren können.

Dieses Webinar umfasst:

  • Einführung in Pub/Sub-Messaging im Allgemeinen
  • UNSERE NCache Pub/Sub-Funktionen
  • Pub/Sub einrichten in NCache
  • Praktische Verwendung von Pub/Sub in Ihren .NET-Apps
  • Demo von Pub/Sub-Messaging über NCache
  • NCache hohe Verfügbarkeit und Skalierbarkeit für Pub/Sub

Das heutige Thema dreht sich um die Nachrichtenübermittlung innerhalb von .NET-Anwendungen, die wir verwenden werden NCache als Beispielprodukt. Der Schwerpunkt wird sein Pub/Sub-Nachrichten. Das Herausgeber-Abonnenten-Modell. Warum ist es wichtig? Wo genau Sie es verwenden und warum NCache ist im Vergleich zu anderen Optionen, die Sie für Ihr .NET sehen, besser geeignet .NET core Anwendungen? Wir haben also viel zu tun. Fangen wir schnell damit an, und Leute, wenn es irgendwelche Fragen gibt, wie Eddie vorgeschlagen hat, nutzt den Frage-Antwort-Tab und stellt so viele Fragen, wie ihr braucht. Also, fangen wir schnell an.

Was ist Pub/Sub?

Die ersten paar Folien konzentrieren sich auf den Einführungsteil. Was ist Pub/Sub? Ich bin mir ziemlich sicher, dass es jeder weiß, aber der Vollständigkeit halber werde ich auf das Pub/Sub-Messaging-Paradigma eingehen.

Es handelt sich also um ein Publisher-Subscriber-Modell. Es besteht hauptsächlich aus drei Komponenten. Wir haben einen Herausgeber, der Nachrichten sendet und diese Nachrichten an den Kommunikationskanal sendet. Dann haben wir Abonnenten, bei denen es sich um eine andere Anwendung handeln könnte, die diese Nachrichten empfängt, und dann haben wir eine Kommunikation, einen Bus, einen Broker, einen Dienst, einen Prozess innerhalb einer Herausgeber- und Abonnenten-Zwischenkomponente, der dabei hilft, diese Nachrichten von Herausgebern an die Abonnenten weiterzuleiten. In einigen Fällen können Sie Nachrichten speichern und Nachrichten verarbeiten. Dies könnte eine Zeitbasis sein, dies könnte auf Ihren Empfängern basieren.

Wie funktioniert Pub/Sub?

Es gibt also verschiedene Optionen, die Sie anpassen können, wenn Sie es verwenden möchten. Aber im Allgemeinen gibt es einige Richtlinien und Regeln, die für typische Pub/Sub-Messaging-Plattformen gelten. Es ist lose gekoppelt. Herausgeber und Abonnenten können unabhängig voneinander arbeiten, ohne voneinander abhängig zu sein. Sie können sich auch völlig unbewusst voneinander fühlen und das System sollte ohne Probleme funktionieren. Die Grundidee besteht darin, dass der Herausgeber einfach Nachrichten an den Kommunikationskanal sendet und der Kommunikationskanal diese Nachrichten dann weiterleitet und die Abonnenten diese Nachrichten empfangen. Der Herausgeber muss nicht über die Identität oder Informationen zu Abonnentenanwendungen Bescheid wissen, und ebenso müssen Abonnenten nicht wissen, was Herausgeberinformationen sind. Sie können sich einfach mit den Nachrichten befassen, das ist der Hauptinteressepunkt und die ganze Idee besteht darin, dass jede Komponente unabhängig arbeitet. Herausgeber sind nicht vom Kommunikationskanal oder den Abonnenten abhängig und umgekehrt.

Die meisten Publisher-Abonnentenmodelle, Pub/Sub-Modelle, ermöglichen eine Trennung von Belangen, wobei Sie Themen, Kanäle oder Streams haben können. Diese dienen der Trennung von Nachrichten. Nachrichten ähnlicher Art, die einem einfachen Zweck dienen, können in ein bestimmtes Thema eingefügt werden und Sie können mehrere Themen, mehrere Streams, mehrere Kanäle innerhalb eines Pub/Sub-Messaging-Paradigmas haben und diese Nachrichten empfangen. Herausgeber stellen eine Verbindung zu Themen her und diese werden dann an ein bestimmtes Thema weitergeleitet. Anschließend können Abonnenten auch eine Verbindung zu einem Thema innerhalb des Kommunikationskanals herstellen und dann diese Nachrichten empfangen. Mit diesem themenbasierten Ansatz funktioniert das absolut einwandfrei.

Hier ist ein Diagramm, das die architektonischen Details hervorhebt.

was-ist-pubsub

Wir haben ein Thema, das ist ein Kommunikationskanal, das ist die Herausgeberanwendung, die wir Abonnentenanwendungen haben. Es kann mehrere Herausgeber geben. Ebenso könnte es mehrere Abonnenten geben und dann können Sie innerhalb des Kommunikationskanals auch mehrere Themen haben. Sie können beispielsweise ein Thema haben, das sich mit Informationen zur Auftragsabwicklung befasst. Es könnte ein anderes Thema geben, bei dem es um Kundeninformationen usw. geht. Basierend auf dem Zweck der Nachricht, basierend auf der Art der Nachricht, das sind die Lastanforderungen, können Sie Nachrichten in Themen verteilen und dann wird dieser Abonnent mit Thema A verbunden, während Abonnent 2 mit Thema A verbunden ist sowie zu B und dann ist Abonnent 3 nur mit Thema B verbunden. Der Herausgeber sendet also diese Nachrichten und die Abonnenten, die mit den jeweiligen Themen verbunden sind, erhalten diese Nachrichten ohne Probleme.

Häufige Anwendungsfälle von Pub/Sub

Okay, also machen wir als nächstes weiter. Was sind die häufigsten Anwendungsfälle von Pub/Sub? Es ist schon seit geraumer Zeit auf dem Markt, dieses gesamte Pub/Sub-Messaging-Paradigma, und es wurde auch in vielen Anwendungen mit hohem Datenverkehr eingesetzt. Es hat viel Traktion.

Wir verfügen also in erster Linie über Backend-Systeme, die von Pub/Sub-Messaging profitieren können, das sich mit der asynchronen Datenverarbeitung befasst. Dabei kann es sich um einige Arbeitsabläufe, einige Hintergrundaufgaben, einige Prozeduren handeln, die Sie benötigen, oder um einige Berechnungen, die Sie durchführen. Daher nutzen Back-End-Systeme hauptsächlich diese Messaging-Plattform.

Chat-Anwendungen, das könnte die Spielebranche sein, die möglicherweise mit Millionen von Benutzern und Millionen von Nachrichten zu tun hat, die für Benutzer übertragen werden. Beispielsweise nutzte einer unserer Kunden Pub/Sub für den Informationsaustausch, als auf seiner Spieleseite verschiedene Turniere stattfanden. Sie tauschten also viele turnierbezogene Informationen zwischen den Benutzern aus.

Finanzbranche, E-Commerce, Buchungen usw., alles, was öffentlich zugänglich ist und eine Back-End-Auftragsverarbeitung, eine Buchungsverarbeitung oder allgemein eine Interaktion zwischen verschiedenen Anwendungskomponenten durchführen muss.

Automatisierungs- und Fertigungsanlagen. Aber typischerweise könnte es der wichtigste Anwendungsfall sein, wäre ein technischer Anwendungsfall, wäre der Microservices Anwendungsfall. Wo wir verschiedene Microservices haben, die eine große Anwendung darstellen, diese Komponenten jedoch einem einzigen unabhängigen Zweck dienen. Es ist sehr schwierig, die Kommunikationsschicht für diese Microservices zu implementieren. Sie müssten einen separaten Kommunikationskanal haben, der wiederum als Microservice fungiert, der auch keine anderen Microservices unterstützen kann, und das ist die ganze Idee, bei der Sie eine unabhängige Microservice-Schicht haben möchten, die Microservice-Instanzen sind unabhängig voneinander. Eine Instanz erfüllt einen einzigen Zweck und ist nicht von einer anderen abhängig und umgekehrt. Bei diesen Microservice-Anwendungen, bei denen wir Microservices innerhalb der Anwendung haben, ist die Implementierung eines Kommunikationskanals sehr schwierig und kompliziert und birgt viele Abhängigkeiten, was die Dinge ebenfalls verlangsamt. Daher ist es sehr sinnvoll, eine Pub/Sub-Messaging-Plattform zu verwenden, bei der der Kommunikationskanal von der Plattform selbst verwaltet wird und Microservices dann als Herausgeber und Abonnenten fungieren und dann Informationen untereinander austauschen. Dies sollte also dazu beitragen, die Belastung zu verringern und die Architekturprobleme zu beseitigen, die typischerweise bei Pub/Sub auftreten, den Microservices-Plattformanwendungen, die einen eigenen Kommunikationskanal verwenden. Sie sollten Pub/Sub nutzen, um dieses Problem zu lösen.

Das Problem: Skalierbarkeitsprobleme bei Pub/Sub-Plattformen

Es gibt viele Pub/Sub-Plattformen, aber typischerweise gibt es Engpässe, und darauf werden wir als Nächstes eingehen. Wir haben typische traditionelle Messaging-Plattformen. Sie sind architektonisch sehr gut. Sie senden eine Nachricht, diese Nachricht wird an alle Abonnenten übermittelt, alles funktioniert einwandfrei. Aber normalerweise funktioniert das bei geringer Last sehr gut. Wenn Sie weniger Benutzer haben, laden Sie weniger und es werden auch weniger Anfragen oder Nachrichten hin und her an Ihre Anwendung übertragen. Was die Auslastung betrifft: Wenn beispielsweise die Anwendungsauslastung zunimmt, gibt es viele Benutzer, es findet viel Verarbeitung statt und dann gibt es eine große Nachrichtenlast von den Herausgebern an die Abonnenten. Typischerweise haben wir gesehen, dass unsere traditionellen Nachrichten B. einer Datenbank, werden sie zu einem Engpass. Hier ist ein Diagramm, das dies veranschaulicht.

Skalierbarkeitsengpass
Der Skalierbarkeitsengpass

Wir haben Publisher-Anwendungen, Abonnenten. Dies kann eine Webanwendung, etwas .NET oder sein .NET Core Backend. Einige Arbeitsabläufe. Es könnte jede Art von .NET sein oder .NET Core Anwendung oder sogar Java-Anwendung, verbunden mit einer herkömmlichen Massenplattform wie einer Datenbank oder einer Messaging-Warteschlange. Erstens sind diese nicht so schnell wie der In-Memory-Store, richtig. Das ist also etwas, das Sie durcharbeiten müssen. Das Hauptproblem besteht jedoch darin, dass sich die Dinge verlangsamen, wenn Ihre Nachrichtenlast zunimmt und Sie viele Benutzer haben, weil Ihre Nachrichtenlast die Plattform selbst überlasten kann, da es sich um eine einzige Quelle handelt. Es ist nicht möglich, immer mehr Server hinzuzufügen, um die erhöhte Last zu bewältigen, die Ihre Anwendungen verursachen.

Das ist also das Hauptproblem und welche Auswirkungen hätte es auf den Endbenutzer? Beispielsweise wurde eine Nachricht nicht rechtzeitig weitergeleitet, was viel Zeit in Anspruch nahm und zur Latenz auf der Anwendungsseite führte. Beispielsweise wartete der Endbenutzer darauf, dass eine Verarbeitung abgeschlossen wurde, und diese Verarbeitung war von einer Pub/Sub-Modellplattform abhängig und die Plattform war langsam. Dies würde sich also wiederum auch auf die Endbenutzeranfrage auswirken, und Sie würden Geschäfte verlieren, wenn es, sagen wir, um einen Faktor von einer Millisekunde oder ein paar Sekunden Verzögerung gäbe Nun, das ist sehr schwierig zu handhaben, denn es gibt keine Möglichkeit, irgendetwas innerhalb der Anwendungsarchitektur zu ändern, um dieses Problem zu lösen. Es gibt ein Problem, das außerhalb der Anwendungsarchitektur mit der Datenbankschicht liegt, richtig. Wie kann man dieses spezielle Szenario angehen?

Die Lösung: Verteilter In-Memory-Cache

Die Lösung ist sehr einfach: Sie verwenden eine In-Memory-Pub/Sub-Messaging-Plattform, die von Natur aus verteilt ist, z NCache. Es ist superschnell, das unterscheidet es von herkömmlichen Messaging-Plattformen. Es kann sein, dass es weniger Funktionen hat, das gebe ich zu. Seit, NCacheDer Schwerpunkt liegt auf Objekt-Caching, Daten-Caching und Sitzungs-Caching und dient der Datenverarbeitung und -speicherung sowie der Leistungsverbesserung. Pub/Sub ist eine der Funktionen. Es gibt Produkte wie Messaging-Warteschlangen, zum Beispiel Java Messaging Service, MSM-Warteschlange, die komplexer sind. Aber was macht NCache abgesehen von diesen Produkten ist das NCache ist der In-Memory. Der Start geht also superschnell.

Scalable-Pubsub-Messaging

Wenn Sie also, sagen wir, fünf Benutzer haben und eine geringere Messaging-Last haben, werden diese Benutzer im Vergleich zu herkömmlichen Messaging-Plattformen ein superschnelles Erlebnis erleben. Es ist also im Speicher. Das ist also ein großes Plus, und dann haben wir mehrere Server, auf denen diese Messaging-Plattform gehostet wird. Sie können einen Teamserver sehen, der zu einer logischen Kapazität zusammengefügt ist, die die Messing-Plattform bildet und auf der ein Pub/Sub-Mechanismus implementiert ist, rechts. So können Ihre Publisher-Anwendungen eine Verbindung zu diesem Cache herstellen und innerhalb des Caches können Sie separate Themen haben. Ich zeige Ihnen, wie das funktioniert, und dann werden Abonnenten, die übrigens auch Herausgeber sein können, mit demselben Kommunikationskanal verbunden, der von angeboten wird NCache B. in Form eines Verteilungscache, und dann stellt dieser Kommunikationskanal diesen Herausgebern und Abonnenten alle kommunikationsbezogenen Informationen zur Verfügung. Dies kann Nachrichten weiterleiten und all diese verschiedenen Arten von Erkundungen, eine andere Art von Beharrlichkeit und verschiedene Funktionen haben, die ich später hervorheben werde.

Das Schöne an dieser Plattform ist, dass Sie so viele Server hinzufügen können, wie Sie benötigen, und Sie müssen sich keine Sorgen machen, dass Ihre Plattform einen Skalierbarkeitsengpass darstellt, wie hier zu sehen ist. Es handelt sich also nicht mehr um einen Skalierbarkeitsengpass. Sie können im Handumdrehen weitere Server hinzufügen und von zwei auf drei Server um einen Faktor erhöhen, und von drei auf vier Server verdoppeln Sie fast die Kapazität, wie viele Anfragen Sie verarbeiten können, wie viele Nachrichten Sie pro Sekunde verarbeiten können und ohne Wenn Sie Kompromisse bei der Leistung eingehen, erhalten Sie lineare Skalierbarkeitsverbesserungen für Ihre Nachrichtenübermittlung, was auf der Anwendungsseite sehr hilfreich wäre. Endbenutzer würden stark davon profitieren, da sie eine schnellere Reaktionszeit, geringe Latenz und einen hohen Durchsatz für Ihre Anwendung und Benutzer sehen würden.

Noch Fragen? Hier erfahren Sie, warum Sie die Verwendung in Betracht ziehen sollten NCache im Vergleich zu herkömmlichen und was sind die Probleme mit der herkömmlichen Pub/Sub-Messaging-Plattform? Noch Fragen? Die nächsten Folien konzentrieren sich auf architektonische Details von NCache Pub/Sub-Messaging und dann sprechen wir über verschiedene Funktionen, die im Rahmen davon angeboten werden. Hallo Ron, wir haben eine Frage. Welche Überwachungsmöglichkeiten gibt es? OK, ich denke, es liegt an der Sache NCache, ja, das ist ein weiterer Pluspunkt, für den ich gegen Ende einen Abschnitt speziell dafür vorbereitet habe. Aber ich denke, es wäre sehr gut, wenn ich bis zu diesem Teil warte und Ihnen die praktische Demo des Produkts gebe und Ihnen als Teil davon auch die Überwachungsfunktionen zeige. Ich werde diese Frage also noch einmal aufgreifen, sobald ich an diesem Punkt angelangt bin. Ich hoffe, das ist in Ordnung.

NCache Pub/Sub-Messaging

Okay, NCache Pub/Sub-Nachrichten. Es ist dem, was Sie hier gesehen haben, sehr ähnlich. Es handelt sich um eine traditionelle Pub/Sub-Messaging-Plattform. Hier ist die Aufschlüsselung der Architektur. Wir haben einen Messaging-Kanal, der von angeboten wird NCache und wir haben hier ein Team von Servern und innerhalb dieses Nachrichtenkanals haben wir Thema 1, Thema 2 und dann haben wir einen Herausgeber, der ein beliebiges .NET sein könnte, .NET Core Anwendung und dann haben wir Abonnenten, die wiederum alle .NET- oder .NET Core, sogar Java-Anwendung, die damit verbunden ist.

pubsub-messaging-with-ncache

Hierfür kann ein dedizierter Cache formuliert werden, und dann ist die Nachricht etwas, das vom Kommunikationskanal mithilfe des typischen Pub/Sub-Mechanismus weitergeleitet wird, bei dem eine Nachricht vom Herausgeber an die Abonnenten gesendet wird. Hier ist ein einfacher Codeausschnitt.

Order payload = new Order();
payload.OrderID = 10248;
payload.OrderDate = new DateTime(2015, 07, 04);
payload.ShipName = "Vins et alcools Chevalier";
...
                
Cache cache = NCache.InitializeCache("PubSubCache");

ITopic orderTopic = cache.MessagingService.CreateTopic("orderTopic");

Message orderMessage = new Message(payload);

// Publish message to all registered subscribers
// Register delivery failure notification

orderTopic.Publish(orderMessage, DeliveryOption.All, true);

Um Ihnen eine Vorstellung davon zu geben, dass Sie Ihre Nutzlast konstruieren, die das Objekt von Interesse ist, initialisieren Sie den Cache, was bedeutet, dass Sie eine Verbindung dazu herstellen, ihr einen Namen geben und das können Sie tun Erstellen Sie einen Cache-Cluster mit verschiedenen Servern, dann erstellen Sie ein Thema oder stellen eine Verbindung zu einem vorhandenen Thema her. Das Thema ist ein Kanal, ein separates Medium für ähnliche Nachrichten. Dann erstellen Sie eine Nachricht, veröffentlichen sie und fertig. So einfach ist es für den grundlegenden Anwendungsfall.

Auf der Abonnentenseite müssen Sie wiederum eine Verbindung zu einem Thema herstellen oder ein neues Thema erstellen und dann mithilfe der Methode „Abonnement erstellen“ Abonnent werden. Dann gibt es einen Rückruf, der jedes Mal aufgerufen wird, wenn eine Nachricht empfangen wird. Dabei handelt es sich um einen asynchronen Anruf -zurück.

Cache cache = NCache.InitializeCache("PubSubCache");

ITopic productTopic = cache.MessagingService.GetTopic(topicName);

ITopicSubscription prodSubscriber = prodTopic.CreateSubscription(MessageReceived);

private void MessageReceived(object sender, MessageEventArgs args)
{
 // Perform operations
}

Eine praktische Demo

Ich sollte Ihnen schnell die Demo des Produkts geben und dann denke ich, dass es viel einfacher zu verstehen wäre, wenn wir die Demo gemacht haben. Ich würde weitermachen und im Rahmen dessen auch die Überwachungsmöglichkeiten beantworten. Also gut, ich würde es Ihnen schnell zeigen NCache Manager-Tool, das mitinstalliert ist.

Erstellen Sie einen Cache

Ich werde einen neuen Cache erstellen.

Cache erstellen

Nennen wir es PubSubCache und ich werde am Ende Windows Win anhängen. Alle Caches müssen benannt werden. Sie können Ihrem Pub/Sub-Cache einen Namen geben, der für Ihre Anwendung aussagekräftig ist. Sie können einen Cache erstellen, NCache ermöglicht Ihnen das Erstellen eines Caches in einer Windows-Umgebung, auf Windows-Servern sowie auf Linux-Servern und wir haben auch eine Windows-Mono-Version, die ebenfalls verfügbar ist. Also, mit Linux müssen Sie verwenden .NET Core und unter Windows können Sie sowohl .NET als auch verwenden .NET Core Veröffentlichungen von NCache. Ich werde also mit Windows-Servern fortfahren. Wählen Sie den Partitionsreplikat-Cache, da ich möchte, dass mehrere Server zur Kapazität für die Anforderungsverarbeitung beitragen.

partitionierte Replik

Daher sind „Partitioned“ und „Partitioned Replica“ sehr gute Optionen. Mit Partitioned Cache können Sie Daten auf mehreren Servern partitionieren, während Partitioned Replica dem Partitioned ähnelt, aber auch über Backups verfügt. Es liegt also ganz bei Ihnen. Wenn Sie möchten, dass die Nachrichten wichtiger Natur sind, wenn ein Server ausfällt und Sie die Nachrichten, die sich noch im Kommunikationskanal befinden, nicht verlieren möchten, können Sie Partitioned Replica verwenden. Andernfalls ist der Partitioned Cache exzentrischer .

Es gibt zwei weitere Topologien, aber diese sind für kleinere Konfigurationen und unsere NCache Architektur-Webinar deckt alle Details rund um diese Topologien sehr effektiv ab. Daher würde ich Ihnen empfehlen, diese zu besuchen und sich dieses Webinar anzusehen, wenn Sie mehr über diese Topologien erfahren möchten. Ich werde alles einfach halten. Wählen Sie Async als Replikationsoption.

Asynchrone Replikation

Das ist zwischen der aktiven Partition und dem Backup auf einem anderen Server und hier gebe ich das Serverteam an, das meinen Cache-Cluster hosten soll. Ich kann zunächst zwei Server haben und jederzeit weitere Server hinzufügen, wie bereits erwähnt. Dies ist übrigens ein TCP-Port. Jede Kommunikation zwischen NCache wird über TCP/IP gesteuert und die Größe ist die Größe pro Server. Basierend auf der Nachrichtenlast und der Datenlast empfehlen wir Ihnen daher, eine relevante Größe für Ihre Anwendungen zu konfigurieren. Ich werde alles einfach halten. Starten Sie diesen Cache im Autostart, sodass der Cache bei jedem Neustart des Servers automatisch gestartet wird, und das war's.

advanced-options

So einfach ist es, diesen Cache zu konfigurieren. Als nächstes zeige ich Ihnen, wie Sie die Anwendung ausführen. Bevor wir damit fortfahren, bräuchte ich jedoch noch einen weiteren Schritt. Es fängt auch an, es dauert also etwas, also, los geht's.

Statistiken überwachen

Es gab also eine Frage zu den Überwachungsoptionen. Ich denke, ich sollte diese jetzt angehen. Ich werde meine Box als Client hinzufügen und von dort aus die Herausgeber- und Abonnentenanwendung ausführen. Diese können auch von jedem Server ausgeführt werden, der Zugriff auf diesen Cache hat. Ich habe meine Box als Client hinzugefügt, das ist also im Wesentlichen die Client-Box. Ich kann eine weitere Box hinzufügen und von dort aus auch Anwendungen ausführen. Sie bemerken, dass im Manager-Tool einige Statistikfensteroptionen verfügbar sind, aber für Pub/Sub würde ich zunächst das starten, was ich tun würde NCache Monitor-Tool und dann zeige ich Ihnen auch einige der Zähler, die speziell für Pub/Sub verfügbar sind.

Monitor-Cluster

Das ist zum Beispiel mein Pub/Sub-Dash. Ich werde weitermachen und das ist NCache Monitor-Tool, das mit der Installation geliefert wird NCache. Ich denke, ich brauche, 1 mal 3 ist gut. Okay, also zunächst einmal, wenn Sie bemerken, dass wir Themenstatistiken haben. Dann werden einige Nachrichten pro Sekunde veröffentlicht, sagen wir, die Anzahl der Nachrichten, und dann verfallen die Nachrichten pro Sekunde. Ich denke, das ist gut. Sie können übrigens auch weitere hinzufügen. Es gibt viele hier und dann gibt es auch PerfMon-Zähler, die verfügbar sind. Lassen Sie mich diese ebenfalls aktivieren und dann werde ich eine Anwendung ausführen, um Ihnen zu zeigen, wie das funktioniert. Ich muss Ihnen nur die Zähler zeigen und unser Monitor-Tool verwendet auch PerfMon-Zähler. Was Sie hier sehen, ist also auch auf dem Monitor verfügbar und umgekehrt. Also gut, wir sind bereit. Deshalb haben wir auch hier einige Zähler. Beispiel: Nachrichtenanzahl, Zustellung pro abgelaufener Sekunde. Sie können also die numerische Ansicht, die numerische Ansicht und dann auch die grafische Ansicht auf dem Monitor sehen.

Führen Sie einen Publisher aus

Jetzt würde ich eine Anwendung ausführen, die mitinstalliert wird, aber ich habe sie ein wenig optimiert, damit ich so viele Nachrichten veröffentlichen kann, wie ich brauche. Das ist also eine App-Konfiguration für den Herausgeber und dann eine App-Konfiguration für den Verbraucher, den Abonnenten. Okay, also würde ich diese Anwendung ausführen. Zunächst wird die Publisher-Anwendung gestartet und Ihnen gezeigt, wie das funktioniert. Lassen Sie mich das überprüfen, vielleicht habe ich nicht gespeichert. Okay, gib mir nur eine Minute, ich muss eine Schleife darum legen. Tatsächlich gibt es eine Schleife. Okay, lass es mich debuggen. Ich habe also keine Informationen, um eine Verbindung zu diesem Cache herzustellen. Also, lasst uns das herausfinden. Ich habe meine Box hinzugefügt, bitte haben Sie Geduld. Lassen Sie mich dieses Problem ganz schnell beheben. Es dauert ein paar Minuten. Obwohl es hinzugefügt wurde, liegt möglicherweise ein Tippfehler vor. Los geht's. Ich habe unseren falschen Cache-Namen angegeben, mein Fehler. Lassen Sie mich den Namen hier noch einmal überprüfen. Es ist Pubsubcachewin.

pubsubcachewin

Ich habe den Cache-Namen von gestern verwendet, bei dem es sich um einen Demo-Cache handelte. Es passiert. Okay, ich bin froh, dass ich das Problem schnell beheben konnte, sonst wäre es eine totale Katastrophe gewesen. Ich denke also, dass wir gut sind. Dies wird also das Programm „publisher.exe“ starten und zehn Nachrichten veröffentlichen. Ich veröffentliche immer wieder dieselben Nachrichten. Zu diesem Zeitpunkt wird der Herausgeber gestartet, der Abonnent ist noch nicht gestartet. Lassen Sie mich Ihnen die Überwachungsdetails zeigen.

Überwachungsdetails

Es gehen natürlich einige Anfragen zu diesem Thema ein. Aber wenn Sie es bemerken, da war mein Thema, das ist der Name 10.

mein Thema

Dort sind Elemente enthalten, und dann sollten Sie sehen, dass diese Nachrichten abgelaufen sind, nachdem die Ablaufzeit abgelaufen ist, und ich denke, ich setze dafür fünf Minuten Ablaufzeit oder mehr ein. Ich würde jetzt weitermachen und noch ein paar weitere veröffentlichen. Los geht's und Sie sollten hier 10 weitere Artikel haben. Also insgesamt 20 Elemente und Sie können sehen, dass die Anzahl der Nachrichten steigt.

mytopic2

Das ist also die Grafik, und Sie können die gleichen Optionen auch im Windows-Leistungsmonitor sehen, wo wir jetzt Größe und Nachrichtenanzahl von 20 auf 12 haben. Vor allem, weil einige abgelaufen sind. Ich denke, dass ich als Teil davon bereits weniger Ablauffristen verwende. Mal sehen, ich denke, die Nachrichtenanzahl wird nicht korrekt angezeigt. Mal sehen, ich denke, das sollte laut meinem Monitor 20 sein.

Abonnenten ausführen

Lassen Sie uns dies mit Hilfe der Abonnenten überprüfen. Mal sehen, wie viele Nachrichten es erhält. Übrigens werde ich Ihnen den Code zeigen, sobald ich mit der Demo fertig bin.

Es soll also die vorhandenen Nachrichten abrufen, und ich denke, es hat sie alle auf zufällige Weise erhalten. Dies ist ein asynchroner Aufruf von Nachrichten. Es kann nicht garantiert werden, dass Nachrichten in dieser Reihenfolge zugestellt werden. So können Sie die erste Nachricht zu einem späteren Zeitpunkt erhalten und so weiter und so fort.

cmd

Und wenn ich hierher zurückkomme, sinkt die Anzahl der Nachrichten auf Null. Ich denke, dieser Zähler, schauen wir uns das noch einmal an. Ich bin mir nicht sicher, ob es sich dabei um die Nachrichten zu einem bestimmten Thema oder um die insgesamt veröffentlichten Nachrichten handelt. Okay, es wird also nicht der richtige Wert angezeigt, obwohl dieser angezeigt werden sollte. Ich denke, diese Nachrichten sind angekommen. Um das zu erreichen, muss ich den Abonnenten schließen. Ich werde einen weiteren Abonnenten eröffnen. Sie sehen also, dass Nachrichten an mehrere zugestellt werden, und ich denke, dann schließen wir es ab und zeigen Ihnen das Codebeispiel dafür. Ich werde noch ein paar Nachrichten eingeben, so weitermachen und dann können Sie auf der Abonnentenseite sehen, dass 10 Nachrichten von diesem und dann noch ein paar weitere von diesem empfangen werden. Wenn es zwei Zustellungsoptionen gibt, können Sie wählen, ob die Nachrichten an alle oder an jeden dieser Abonnenten gesendet werden sollen. Richtig, basierend auf dem, was auch immer sie empfängt, wird eine Nachricht auch aus dem Cache abgelaufen. Das war also eine kurze Demo. Jetzt zeige ich Ihnen die Details dazu, was zum Veröffentlichen einer Nachricht erforderlich ist. Was sind die Besonderheiten auf der Themenseite? Welche Funktionen gibt es auf der Herausgeberseite und welche Funktionen auf der Abonnentenseite? Wenn Sie an dieser Stelle Fragen haben, lassen Sie es mich bitte wissen. Gerne beantworte ich Ihnen diese Fragen jetzt, andernfalls mache ich weiter und zeige Ihnen die detaillierte architektonische Seite der Dinge.

Wichtigste Pub/Sub-Schnittstellen in NCache

Dies sind die Hauptschnittstellen innerhalb NCache.

Betreff

Wir haben Thema. Auch hier handelt es sich um einen Kommunikationskanal. Es enthält eine Liste der Abonnenten und leitet veröffentlichte Nachrichten an die verbundenen Abonnenten weiter.

Nachricht

Dann haben wir eine Nachricht, die die Hauptnutzlast darstellt. Der Point of Interest, das Objekt des Interesses für Abonnenten. Es handelt sich um eine serialisierbare Nutzlast. Es kann sich um jedes Objekt handeln, um jede Nachricht, die Sie übermitteln möchten, um genau zu sein um alle Daten.

Publisher

Bei einem Herausgeber handelt es sich um eine Anwendung, die Nachrichten veröffentlicht und optional auch eine Benachrichtigung über den Zustellungsstatus erhalten kann. Sie können den Übermittlungsstatus aktivieren. Da dies jedoch zuvor festgelegt oder bereits erläutert wurde, muss der Herausgeber nicht auf die Übermittlung der Nachricht warten. Es kann weitergehen. Der optionale Lieferstatus ist also etwas, das Sie je nach Bedarf aktivieren oder deaktivieren können.

Teilnehmer

Abonnenten registrieren sich für ein bestimmtes Thema und erhalten alle Nachrichten.

Schauen wir uns diese also einzeln an und das Diagramm veranschaulicht alles, was wir gerade besprochen haben.

pubsub-arch

Der Herausgeber erstellt Nachrichten, registriert Ereignisse, sendet Nachrichten, thematisiert und speichert Nachrichten, speichert Abonnenten und sendet Nachrichten. Abonnenten abonnieren und erhalten dann Nachrichtenbenachrichtigungen.

NCache Pub/Sub-Themenschnittstelle

Sehen wir uns also die Themenschnittstelle an. Zunächst können Sie also eine erstellen NCache Pub/Sub-Thema erstellen und dann auch eine Verbindung zu einem vorhandenen Thema herstellen oder ein Thema löschen. Sehen wir uns also an, worum es bei dieser Schnittstelle hier geht? Wenn ich also hier zu diesem Herausgeber gehe, muss ich zuerst zu dem Programm gehen, und wenn Sie es in diesem Programm bemerken, erhalte ich den Cache-Namen. Ich erhalte den Namen des Themas, bei dem es sich um ein beliebiges Thema handeln kann, das Sie auswählen können, und ich erhalte einen Nachrichtenzähler, bei dem es sich um eine zufällige Nachricht handelt, und dann habe ich die Methode „publisher.start“, die ich implementiert habe und in der ich Ich werde den Cache initialisieren, was bedeutet, dass ich ihn mit dem Cache verbinden werde und dann eine Schnittstelle zum Erstellen eines Themas erhalte, und wenn ich hierher zurückkomme, haben wir IMessagingService. Also, wenn ich Ihnen das hier schnell zeige.

IMessagingService Interface for managing Topics in NCache

namespace Alachisoft.NCache.Web.Caching
{
    public interface IMessagingService
    {
        ITopic CreateTopic(string topicName);
        void DeleteTopic(string topicName);
        ITopic GetTopic(string topicName);
    }
}

Wir haben die IMessagingService-Schnittstelle, die über eine CreateTopic-Methode, eine DeleteTopic-Methode zum Löschen eines Themas und dann über GetTopic verfügt. Sehen wir uns diese einzeln an. Mit dem Messaging-Dienst haben wir also ein Thema erstellt oder wir können einfach eine Verbindung zu einem vorhandenen Thema herstellen. Was Sie wirklich tun, ist, dass Sie auch die Nachrichtenzustellung und die Benachrichtigung über Zustellungsfehler aktivieren können, wenn Sie dies möchten. Beispielsweise können Sie hier einen Rückruf einrichten und dieser Rückruf kann wiederum aufgerufen werden, ist jedoch optional. Sie benötigen dies nicht unbedingt, wenn Sie es nicht aktivieren möchten. Wie ich bereits sagte, sind Nachrichtenzustellungsbenachrichtigungen optionale Benachrichtigungen, sodass Sie sie nicht unbedingt aktivieren müssen. Es hängt ganz von Ihrem Anwendungsfall ab. Wenn Sie diese aktivieren möchten, können Sie dies tun.

Dann haben wir eine Veröffentlichungsmethode, die eine benutzerdefinierte Methode für diese Anwendung ist, einen Wrapper dafür und dann erstellen wir darin eigentlich eine Nachricht und verwenden dann topic.publish message. Dies gibt also eine Nachricht, ein Thema zurück. So etwas wie ein Griff zu diesem Thema und dann ist topic.publish ihre eigentliche Methode, wenn ich es Ihnen hier kurz zeige. Dies ist eine ITopic-Schnittstelle, die einen Namen hat. Sie kann eine Nachrichtenanzahl haben, sie kann eine Ablaufzeit haben, die ich Ihnen gleich zeigen werde, und dann hat sie auch einige Rückrufe zu Themen wie gelöscht, Nachrichtenübermittlungsfehler usw Dann können Sie ein Abonnement für das Thema abschließen und dann auch Nachrichten darin veröffentlichen. Dies ist die erste Methode, die ich vorstellen wollte: Sie können topic.publish verwenden und dann, wenn Sie bemerken, dass es eine Übermittlungsoption als gibt Also. Sie können die Lieferung an alle als „Muss“ oder an jeden anordnen. Das ist also die Nachrichtenebene, das ist also eine Zustellungsoption für die Nachrichten, die an dieses Thema übermittelt oder gesendet werden, und dann gibt es hier noch einen optionalen letzten Booleschen Wert. Sehen wir uns das an. Was schlägt es vor? Für diesen Fall gilt, ob Sie eine Fehlermeldung erhalten möchten oder nicht. In diesem Fall setze ich dies also auf „true“, aber Sie können es deaktivieren. Wenn dies der Fall ist, wird der Rückruf auf der Herausgeberseite entsprechend aufgerufen.

Wir haben hier also zwei Methoden gesehen. Sie können ein Thema erstellen und gleichzeitig auch ein Thema erstellen. Das ist also eine weitere Methode, die Sie alternativ verwenden können. Da ich dies jedoch zum ersten Mal ausführe, verwende ich „Thema erstellen“, veröffentliche Nachrichten zum Thema und kann das Thema dann bei Bedarf auch löschen. Das sind also einige der Szenarien, und wie Sie sehen, zeigen diese Folien daneben die gleichen Beispiele.

Create Topic: Code snippet to create a new topic in distributed cache

string cacheName = "pubSubCache";
string topicName = "orderTopic";

Cache cache = NCache.InitializeCache(cacheName);

cache.MessagingService.CreateTopic(topicName);

Wenn Sie also das Thema löschen, wird der Rückruf „Thema gelöscht“ aufgerufen, und der Rückruf „Thema gelöscht“ ist ein Rückruf, von dem aus Sie Ihre Endbenutzer oder alle Informationen, die Sie veröffentlichen müssen, benachrichtigen können.

Delete Topic: Deletes an existing Topic distributed

string cacheName = "pubSubCache";
string topicName = "orderTopic";

Cache cache = NCache.InitializeCache(cacheName);

cache.MessagingService.DeleteTopic(topicName);

OnTopicDeleted callback: If registered, it will be triggered upon the Delete Topic call.

using (Subscriber subscriber = new Subscriber())
{
// Subscribes on it, using the provided cache-Id and the topic-name.

subscriber.OnTopicDeleted = TopicDeletedCallback;
}

static void TopicDeletedCallback(object sender, TopicDeleteEventArgs args)
{
 Console.WriteLine("Topic '{0}' deleted.", args.TopicName);
}

NCache Pub/Sub-Nachrichtenschnittstelle

Werfen wir einen Blick auf die Messaging-Schnittstelle und besprechen hier, dass es eine Option zur Nachrichtenungültigmachung, Benachrichtigungen über empfangene Nachrichten, Fehler- oder Empfangsbenachrichtigungen, Fehlerbenachrichtigungen und dann auch Verschlüsselung und Komprimierung gibt, die als Teil davon unterstützt werden. Werfen wir also einen Blick auf die IMessage-Schnittstelle. Wir haben hier also eine Botschaft.

namespace Alachisoft.NCache.Runtime.Caching
{
    public class Message : IMessage
    {
        public Message(object payload, TimeSpan? timeSpan = null);

        public static TimeSpan NoExpiration { get; }
        public string MessageId { get; }
        public TimeSpan? ExpirationTime { get; set; }
        public object Payload { get; }
        public DateTime CreationTime { get; }
    }
}

Mal sehen, was davon alles dabei ist. Also, zunächst einmal haben wir eine TimeSpan, Sie können NoExpiration wählen oder Sie können hier eine TimeSpan ExpirationTime als Nachrichtenoption angeben und wenn ich gleich hierher zurückkomme, wenn Sie bemerken, dass wir einen zeitbasierten Ablauf festlegen Auch dazu, wenn Sie bemerken, dass dies hier weitergegeben wird und wir eine Zeitspanne haben. Dies wird also vom Programm selbst aufgerufen. Also geben wir „TimeSpan.FromMinutes(5)“. Das bedeutet also im Wesentlichen, dass jedes Thema, das nicht zugestellt wird, wenn kein Abonnent vorhanden ist oder die Verbindung der Abonnenten getrennt wurde, für den angegebenen Zeitraum im Kommunikationskanal verbleibt. Es handelt sich um eine Art Persistenz, aber da es gegen die Pub/Sub-Plattform verstößt, Nachrichten auf unbestimmte Zeit beizubehalten, ist die Zeitbasis die richtige Option, bei der Sie Nachrichten für eine bestimmte Zeitdauer beibehalten und anschließend den Speicher selbst löschen. Diese Nachrichten werden auch nicht einzeln im Kommunikationskanal ablaufen, und dieser Ablauf kann auf der Themenebene selbst erfolgen. Das Thema selbst kann ein Ablaufdatum haben, oder Nachrichten können auch mit einem individuellen Ablaufdatum versehen sein. Das ist also etwas, was Sie tun. Wenn der Herausgeber und die Abonnenten verbunden sind, veröffentlicht der Herausgeber übrigens die Nachrichten und diese werden sofort weitergeleitet. Es wird nicht auf den Ablauf gewartet. Es wird nicht gespeichert, ob die Nachricht zugestellt wurde. Sobald die Nachricht zugestellt wurde, wird sie sofort aus dem Cache entfernt. So richten Sie also den Ablauf ein.

Dann haben Sie auch einige Empfangsbenachrichtigungen zu den Nachrichten. Das habe ich Ihnen bereits gezeigt. Sie können beispielsweise die Lieferung sehen, „Publisher.MessageDeliveryFailure“ Benachrichtigung und dann können Sie auch eine Nachricht und den Erfolgsstatus aus der Nachricht generieren. Das ist also eine weitere Option, die Sie als Teil dieser Option aktivieren können. Anschließend können auch Nachrichtenverschlüsselung und -komprimierung durchgeführt werden, und das ist eine Option, bei der keine Codeänderung erforderlich ist. Alles, was Sie tun müssen, ist zum Cache selbst zu kommen und zu den Optionen zu gehen, denn alles wird von gesteuert NCache selbst. Sie können also die Komprimierung aktivieren und mit der rechten Maustaste klicken und Hot-Apply-Konfigurationen auswählen.

Hot-Supply-Config

Die Komprimierung eignet sich für Objekte, die größer sind. Die Nutzlast der Nachricht ist größer, daher sollten Sie die Komprimierung automatisch aktivieren und die Verschlüsselung ist eine weitere Option. Dazu müssten Sie die Verschlüsselung aktivieren. Dazu müssen Sie zuerst den Kommunikationskanal stoppen, den Cache stoppen und dann die Verschlüsselung aktivieren. Es gibt viele Anbieter, aus denen Sie wählen können. Alle Nachrichten werden verschlüsselt und erst dann an den Herausgeber und die Abonnenten zurückgesendet. Ich hoffe, das war unkompliziert. Das Nachrichtenbeispiel finden Sie hier.

//Payload containing OrderId to be sent in message

Order payload = new Order();
payload.OrderID = 10248;
payload.OrderDate = new DateTime(2015, 07, 04);
payload.ShipName = "Vins et alcools Chevalier";
payload.ShipAddress = "59 rue de l'Abbaye";
payload.ShipCity = "Reims";
payload.ShipCountry = "France";

//Create message with payload and expiration time set to 150 seconds

Message message = new Message(payload);
message.ExpirationTime = new TimeSpan(0, 0, 150);

Sie können order verwenden, eine Nachricht erstellen, eine Ablaufzeit festlegen und diese dann verwenden „topic.publish“ und stellen Sie diese Nachricht dem richtigen Thema zur Verfügung.

Benachrichtigung über den Empfang einer Nachricht

Also, Nachricht erhalten Benachrichtigung. Auf der Abonnentenseite möchte ich Ihnen das auch zeigen.

Callback invoked when a message is published on the topic

string cacheName = "pubSubCache";
string topicName = "orderTopic";

Cache cache = NCache.InitializeCache(cacheName);

//Get Order topic
ITopic orderTopic = cache.MessagingService.GetTopic(topicName);

//Register subscribers for Order topic

ITopicSubscription ordSubscriber = orderTopic.CreateSubscription(messageReceivedCallback);

private void messageReceivedCallback(object sender, MessageEventArgs args)
{
              //perform operations
if (args.Message.Payload is Order ord)
   {
              //perform operations
   }

Aus Abonnentensicht müssen Sie lediglich eine Verbindung zum Cache herstellen, um zu beginnen. Verbinden Sie sich mit dem Thema mit „_cache.MessagingService.GetTopic“. Dies war die Methode, die ich Ihnen zuvor gezeigt habe. Sie können aber auch ein Thema erstellen, sofern es vorhanden ist, und dann ein Abonnement erstellen, mit dem Sie eine Nachricht in einem Rückruf empfangen können. Hier ist der Rückruf zum Empfangen einer Nachricht. Ich denke, es sollte genau hier im Programm stehen. Nachricht erhalten Rückruf. Dies wird also jedes Mal aufgerufen, wenn eine Nachricht empfangen wird. Damit ist das Beispiel hier abgeschlossen.

Schritt für Schritt: Nachricht zum Thema veröffentlichen

Also noch einmal Schritt für Schritt. Sie initialisieren den Pub/Sub-Cache-Cluster, erstellen ein dediziertes Thema oder stellen eine Verbindung zu einem bestehenden her. Registrieren Sie bei Bedarf Nachrichtenübermittlungsereignisse. Dies ist optional. Erstellen Sie eine Nachricht und veröffentlichen Sie sie in einem separaten Thema. Aktivieren Sie den Ablauf, aktivieren Sie die Lieferoptionen nach Bedarf und das ist ein Code, der helfen würde, dies zu rechtfertigen.

public void PublishMessages()
{
string cacheName = "pubSubCache";
string topicName = "orderTopic";
Cache cache = NCache.InitializeCache(cacheName);
ITopic orderTopic = cache.MessagingService.CreateTopic(topicName);

//Register message failure notification
orderTopic.MessageDeliveryFailure += FailureMessageReceived;

//Register topic deletion notification
orderTopic.OnTopicDeleted = TopicDeleted;

//Payload to be sent in message
Order payload = new Order();
payload.OrderID = 10248;
payload.OrderDate = new DateTime(2015, 07, 04);
payload.ShipName = "Vins et alcools Chevalier";
payload.ShipAddress = "59 rue de l'Abbaye";
payload.ShipCity = "Reims";
payload.ShipCountry = "France";

//Create message with Order and expiration time set to 150 seconds
Message orderMessage = new Message(orderPayload);
orderMessage.ExpirationTime = new TimeSpan(0, 0, 150);

//Publish message to all registered subscribers
//and register message delivery failure notification
orderTopic.Publish(orderMessage, DeliveryOption.All, true);

Und dann werden Sie auf der Abonnentenseite mit dem Cache verbunden, erhalten ein vorhandenes Thema oder erstellen ein neues. Erstellen Sie ein Abonnement für das Thema zum Empfangen von Nachrichten. Registrieren Sie Ereignisse für den Empfang, bei denen es sich um asynchrone Ereignisse handelt, und melden Sie sich dann vom Thema ab und löschen Sie es bei Bedarf, und das Ereignis löschen kann zu einem Teil davon gemacht werden.

NCache Überwachung für Pub/Sub

Die nächsten paar Folien werden sich auf die Überwachungsseite konzentrieren. Lassen Sie uns diese in ihrer Gesamtheit betrachten. Wir haben bereits die grundlegenden Details im PerfMon-Counter-Support für behandelt NCache, wir haben verschiedene Optionen innerhalb des Dashboards. Lassen Sie uns ein weiteres Dashboard erstellen.

Dashboard erstellen

Lassen Sie uns all dies hinzufügen. Wir haben also auch einige Themenstatistiken. Wir haben zum Beispiel Themenstatistiken, die ich Ihnen bereits gezeigt habe. Themenanzahl, Anzahl der Themen, die Sie haben. Anzahl der Nachrichten. Die Größe des Nachrichtenspeichers, also die Gesamtgröße und Bytes für das Thema, ist für den Kapazitätsaufbau sehr wichtig. Wenn Sie wissen möchten, wie viele Nachrichten zugestellt oder veröffentlicht werden, können Sie die pro Sekunde veröffentlichte und die pro Sekunde zugestellte Nachricht per Drag-and-Drop verschieben und dann einen bestimmten Nachrichtenablaufstatus sowie einen Teil davon anzeigen. Das sind also einige der Zähler. Wenn ich die Beispielanwendung noch einmal ausführe, würden Sie bei all diesen Aktivitäten sehen. Okay, ich werde weiterhin etwas laden, indem ich mehrmals die Eingabetaste drücke, und wenn ich hierher zurückkomme, können Sie die Aktivitäten auf allen sehen.

Statistiken

Es gibt 220 Nachrichten. Die Anzahl der Themen beträgt zu diesem Zeitpunkt 1. Die Anzahl der Nachrichten beträgt etwa 220. Die Größe des Nachrichtenspeichers wird ebenfalls angezeigt. Nachrichten werden veröffentlicht. Aber es gibt keine Nachricht, die zugestellt wurde, und es gibt keine Nachrichten, die abgelaufen sind, und wenn ich nur einen Abonnenten starte, geht das ganz schnell, man sieht, dass diese Nachrichten auch empfangen werden. So, und wenn ich hierher zurückkomme, sollten Sie hier auch Aktivität sehen. Es werden auch Nachrichten empfangen.

Nachrichten empfangen

Damit ist der Prozess abgeschlossen. Sie können diese Zähler protokollieren, um die Kapazität, die insgesamt vorhandenen Themen, die vorhandenen Nachrichten, die Größe des Speichers und den Ablauf dieser Nachrichten zu sehen, und ich kann so viele Themen erstellen, wie ich brauche auf meine Anforderungen. Dieselben Zähler sind auch unter Windows PerfMon verfügbar. Sie haben hier also das gleiche Set und zusätzlich einige PowerShell-Cmdlets. Wenn Sie beispielsweise gleich hier zu unserer Dokumentation gehen, lassen Sie mich sie ganz schnell öffnen. Wir haben also drei verschiedene Optionen: PerfMon Counters, NCache Monitor- und PowerShell-Cmdlets. In manchen Fällen möchten Sie sich einfach auf Tools verlassen. Zu diesem Zweck können Sie also unsere Dokumentation und unseren PowerShell-Leitfaden verwenden. Mal sehen, ob ich ihn ganz schnell durchsuchen kann. Es gab mir einen allgemeinen Link, also lassen Sie mich hier einfach einige Überwachungsoptionen sehen. Sie sehen also „Get-Topics“, ein PowerShell-Cmdlet, mit dem Sie Themennamen basierend auf dem Cache-Namen abrufen können. Zum Beispiel, wenn ich hier PowerShell öffne. Ich kann diesen Befehl verwenden. Lassen Sie mich ihn einfach auf dieser Seite öffnen, damit es klar ist. Okay, also kann ich es zum Beispiel von jeder Box aus hier ausführen und dann ist pubSubCachewin der Name des Caches. Es würde mir nichts bringen. Ich muss es auf dem Server selbst ausführen, weil ich denke, dass es nicht so ist, pubSubCachewin, los geht's. Mein Thema, Abonnenten, Herausgeber und Nachrichtenanzahl.

Cmdlet

Der Grund, mit der Arbeit von meiner Box aus zu beginnen, besteht darin, dass sie eine IP-Adresse benötigt, um zu wissen, wo der Cache vorhanden ist. Daher gibt es auf der PowerShell-Seite einige Tools, mit denen Sie bei Bedarf einige Statistiken anzeigen können. Damit ist der Demoteil abgeschlossen. Bitte lassen Sie mich wissen, wenn Sie Fragen haben. Ich werde gegen Ende etwas Zeit aufwenden, um Einzelheiten zur Architektur oder zu dem, was im Rahmen dieses Kommunikationskanals angeboten wird, zu erfahren. NCache als Messaging-Plattform und warum NCache passt es besser?

Verteilte Cache-Architektur

Zuallererst NCache ist Open Source. Sie können also loslegen und Pub/Sub ist sogar in einer Open-Source-Version verfügbar NCache. Es ist linear skalierbar, das ist der wichtigste Punkt, und davor ist es speicherintern. Das ist der Hauptinteressepunkt für Anwendungen, die nur Leistung anstreben und zu Beginn keine hohen Lastanforderungen haben möchten. Also, wenn es ein Leistungsproblem gibt NCache Auch hier ist es im Vergleich zu herkömmlichen Pub/Sub-Messaging-Plattformen besser geeignet.

Es ist linear skalierbar, was im Wesentlichen bedeutet, dass Sie so viele Server hinzufügen können, wie Sie benötigen. Zwei Server reichen aus. Aber wenn sie die Kapazität erreichen, weil die Kapazität dadurch beeinträchtigt werden kann NCache auch Server. Das anfängliche Problem, das Sie bei der Datenbank gesehen haben. Das sagen wir nicht NCache würde dieses Problem nicht sehen. Mit einem Server können Sie eine Kapazität erreichen, und Sie können auch mehr Server haben, aber diese zusätzlichen Server könnten auch die Kapazität erhöhen. Diese beiden Server sind beispielsweise gerade ausgelastet und das ist der richtige Zeitpunkt, weil Sie im Voraus wissen, welche Lastanforderungen bzw. hohe Auslastung Ihre Anwendung benötigt. Sie können dem also vorbeugen, indem Sie weitere Server hinzufügen und eine bessere Kapazitätsplanung vornehmen. Es können also im Handumdrehen weitere Server hinzugefügt werden, und das ist das Schöne daran, dass es linear skalierbar ist.

Das dritte wichtige Merkmal ist, dass Sie bei Bedarf auch Replikationsunterstützung erhalten können, was die Zuverlässigkeit gewährleistet. Es ist bereits hochverfügbar und ein Serverausfall hat keine Auswirkungen auf die Endkunden, da sonst die Plattform des Herausgebers oder Abonnenten ohne Probleme funktionieren würde. Solange Sie einen überlebenden Knoten im Cache-Cluster haben, bleibt die Pub/Sub-Plattform betriebsbereit. Warum ist das möglich? Es ist hochverfügbar, weil es dynamischer Natur ist.

dynamischer Cache

Es handelt sich um einen Cache-Cluster mit 100 % Peer-to-Peer-Architektur. Dadurch können Sie so viele Server hinzufügen, wie Sie benötigen, und diese Server sind von Natur aus unabhängig. Sie tragen zur Bearbeitungskapazität von Anfragen bei, indem sie die Last verteilen, funktionieren aber zu 100 % unabhängig. Ein Serverausfall oder das Hinzufügen eines neuen Servers hätte keine Auswirkungen auf den Cache. Dazu muss die Plattform nicht angehalten werden. Es kann weiterarbeiten und die Clients müssen dann nicht gestoppt oder neu gestartet werden. Das ist das Problem bei herkömmlichen Quellen: Wenn ein Server ausfällt, müssen Sie möglicherweise Clients neu starten, um die verbleibenden Knoten verwenden zu können. Das ist also eine Dynamik in der Natur, bei der sich Clients automatisch anpassen und der Cluster selbst mit einem Selbstheilungsmechanismus zu 100 % verfügbar ist. Wenn ein Server hinzugefügt wird, passt sich der Cluster daran an, indem er die Last auf den neu hinzugefügten Server verteilt und gleichzeitig die Clients benachrichtigt.

dynamischer-cache2

Ähnlich verhält es sich im Wartungsfall oder im Fall eines Serverausfalls, bei dem ein Server ausfällt oder ausfällt. In diesem Fall bleibt der Cache-Cluster betriebsbereit. Damit dies funktioniert, benötigen Sie einen überlebenden Knoten und die Clients werden zur Laufzeit benachrichtigt. Die Unterstützung für Verbindungs-Failover ist in das clientseitige Protokoll integriert. Clients erkennen also Ausfälle, führen dann ein Failover durch und beginnen automatisch mit der Verwendung von Survival-Knoten. Dies gewährleistet eine 100-prozentige Verfügbarkeit auf der Cache-Seite und auch für Ihre End-Clients, die damit verbunden sind. Es ist also dynamischer Natur. Es ist zu 100 % auf Peer-to-Peer-Architektur aufgebaut. Die Unterstützung für Verbindungs-Failover ist integriert und der Cluster führt eine Selbstheilung durch. Es handelt sich um einen in das Protokoll integrierten Mechanismus. Dadurch wird eine 100-prozentige Betriebszeit gewährleistet, ein hochverfügbares Cache-Szenario.

Caching-Topologien: Partitionierter Cache

Die Topologie der Kommunikationskanäle.

Partitionierter Cache

Die Pub/Sub-Plattform kann über eine Partitionierung der Daten verfügen. Sie können Daten sowohl auf Server 1 als auch auf Server 2 partitionieren lassen. Dabei handelt es sich um Datenelemente, die Ihre Nachrichten darstellen. Wir haben also einige Nachrichten von Server 1 und andere von Server 2 zugestellt. Es ist völlig zufällig, basierend auf unserem Verteilungsalgorithmus, und Ihr Herausgeber und Ihre Abonnenten sind mit allen Servern verbunden. Einige sind also mit Server 1 verbunden, andere mit Server 2, aber wenn Sie bemerken, dass jeder Server über eine Verbindung verfügt, sind sie tatsächlich mit allen verbunden, aber einige Nachrichten werden von Server 1 zugestellt, andere von Server 2 und so weiter her. Die Nachrichtenlast wird also verteilt und dies erfolgt exzentrisch, wobei die gesamte Speicherkapazität dieser Server vollständig ausgenutzt wird, um die Nachrichten bereitzustellen, um die Nachrichten zu speichern, für ihre Ablaufzeit und außerdem wird ihre Rechenleistung zu einer logischen Kapazität zusammengefasst sowie. Alle diese Dienste tragen also zur Anforderungsverarbeitungskapazität bei. Aus diesem Grund erhalten Sie mehr Kapazität aus dem System, wenn Sie weitere Server hinzufügen. Aus diesem Grund empfehlen wir Ihnen, die Replikattopologie des Partitionsvorgangs zu verwenden, da Sie bei Bedarf eine lineare Skalierung durchführen können müssen.

Caching-Topologien: Partition-Replica-Cache

Dies ist der Partitionsreplikat-Cache, der auch Backup-Unterstützung bietet.

Partitionsreplikat

Wir haben eine aktive Partition von Server 1 und ein Backup auf (Server) 2. Daher bilden alle Server eine aktive Partition und eine Backup-Partition eines anderen Servers, der eine Replik für einen anderen Server darstellt. Server 1 ist eine aktive Sicherung auf Server 2, Server 2 ist eine aktive Sicherung auf Server 3 und Server 3 ist eine aktive Sicherung auf Server 1, und der Cluster ist weiterhin in der Lage, dies zu verwalten, wenn ein Server ausfällt. Denn wenn Server 1 ausfällt, war das Backup von Server 1 auf 2, also wird dieses Backup aktiviert und mit Server 2 und 3 zusammengeführt, und der Cluster heilt sich selbst und formuliert einen 2-Knoten-aktiven Backup- und Aktiv-Passiv-Mechanismus, bei dem das Backup von Server 1 eingeschaltet ist Die Sicherung von Server 2 erfolgt auf Server 1. Und sie erfolgt völlig nahtlos für Ihre Endbenutzer. Sie müssen sich keine Sorgen machen, dass Endbenutzer davon betroffen sein könnten. Also mit 100 % Verfügbarkeit NCache sorgt für all das.

Okay, das bringt uns zum Ende unserer Präsentation. Bitte lassen Sie es mich wissen, wir können uns gegen Ende auf einige der Fragen konzentrieren, die Sie vielleicht haben. Daher würde ich es an dieser Stelle Eddie überlassen. Eddie, du kannst es hier abholen. Nochmals vielen Dank für Ihre Zeit. Wir hoffen, dass es Ihnen geholfen hat und wir freuen uns darauf, Sie bei unserem nächsten Webinar wiederzusehen. In der Zwischenzeit, wenn Sie das bestehende Webinar, das Sie gerade online besprochen haben, noch einmal durchsehen möchten alachisoft.com/resources Nochmals eine Erinnerung, NCache ist heute die einzige native Anwendung auf dem Markt, die maximale Leistung bietet. Ich freue mich darauf, Sie bald wiederzusehen. Danke schön.

Was macht man als nächstes?

 
© Copyright Alachisoft 2002 - Alle Rechte vorbehalten NCache ist eine eingetragene Marke der Diyatech Corp.