Die richtigen NCache in Microsoft Azure Service Fabric

Hallo und willkommen zu einer weiteren Präsentation von NCache. Heute werden wir darüber sprechen, wie wir können einsetzen NCache in eine Service Fabric-Umgebung. Es gibt viel zu behandeln, also fangen wir an.

NCache Einsatz

Beginnen wir mit einem allgemeinen Überblick darüber, was wir zu erreichen versuchen. Hier haben wir also eine Vogelperspektive einer typischen Service Fabric-Anwendung, die in Azure bereitgestellt wird.

ncache-Bereitstellung-Azure

Wir haben einen Service Fabric-Cluster mit einem Azure Load Balancer. Innerhalb der Service Fabric-Anwendung gibt es eine Reihe von Diensten, die in verschiedenen Sprachen geschrieben werden können. Diese Dienste werden in der Regel als containerisierte Dienste bereitgestellt. In einer Unternehmensanwendung ist verteiltes Caching jetzt wichtig, um eine hohe Leseleistung zu ermöglichen, und genau hier liegt der Punkt NCache kommt in.

NCache kann innerhalb der Service Fabric-Anwendung als containerisierter Dienst bereitgestellt werden. NCache Der Server wird in den Containern auf den mehreren Knoten der VM-Skalierungsgruppe ausgeführt, kann miteinander kommunizieren und einen geclusterten Cache bilden. Überbrückung der Kluft zwischen der NCache Clients und den Servern haben wir den Cache Discovery Service, der verwendet wird, um die Echtzeit-IP-Adressinformationen der zu erhalten NCache Server und liefern diese Informationen an die NCache Kunden. Mit diesen Informationen kann die NCache Clients können dann Cache-Handles erstellen, mit denen sie mit der Durchführung von Cache-Verwaltungs- und CRUD-Vorgängen auf dem beginnen können NCache Geclusterter Cache.

Das Folgende sind also die Hauptparameter der Demonstration, die wir heute halbieren werden.

Details zur Demo-Umgebung

Das NCache Server, die in den Windows-Containern ausgeführt werden, verwenden das Docker-Image mit dem Namen „alachisoft/ncache:neueste'. Diese enthält die NCache Enterprise, Mit .NET framework Installation. Wir beginnen mit 2 NCache Server, die zusammengeführt werden, um einen geclusterten Cache mit einer Partition der Replica-Topologie zu bilden. Die Zwei NCache Kundenanwendungen, die wir haben, sind darin geschrieben .NET Core und Java und führen CRUD-Operationen auf dem aus NCache Servers

Erstellen Sie einen Service Fabric-Cluster

Als Erstes erstellen wir also zunächst eine Service Fabric-Infrastruktur auf Azure. Ich kann zu meinem Browserfenster kommen, wo ich mein Azure-Portal bereits geöffnet habe.

Azure-Portal

Ich habe eine Ressourcengruppe mit dem Namen „NCacheServiceFabric“ und diese enthält derzeit nur eine einzige „Key Vault“-Ressource. Diese Schlüsseltresorressource enthält das Zertifikat, das mit dem Service Fabric-Cluster verwendet wird. Als ich zu Visual Studio 2019 überging, habe ich eine ARM-Vorlage geöffnet und Einstellungen eingeführt, um den offenen Konfigurationsmodus von Service Fabric zu ermöglichen.

Visual-Studio

Wir werden mehr über den offenen Konfigurationsmodus von Service Fabric sprechen und warum wir ihn verwenden, nachdem wir die Infrastruktur bereitgestellt haben. Um also mit der Bereitstellung zu beginnen, kann ich zum „Projektmappen-Explorer“ wechseln und auf mein Azure-Ressourcengruppenprojekt mit der rechten Maustaste klicken, zur Bereitstellung kommen und die Ressourcengruppe aufgelistet haben.

visuelles Studio2

Dadurch wird ein Bereitstellungsfenster geöffnet. Ich kann auf die Schaltfläche „Bereitstellen“ klicken und die Bereitstellung beginnt.

Deploye-Button

Das wird einige Zeit dauern, also werde ich das Video hier pausieren. Unsere Vorlage wurde erfolgreich bereitgestellt, und um dies zu bestätigen, können wir zu unserem Azure-Portal zurückkehren. Wenn ich die Seite aktualisiere, sehen Sie Änderungen und hier tun wir. Jetzt wurden also unser Service Fabric-Cluster und alle zugehörigen abhängigen Ressourcen erfolgreich erstellt. Um zu beginnen, werde ich als erstes über den offenen Konfigurationsmodus sprechen, den ich zuvor angesprochen habe.

Dieser Artikel geht im Wesentlichen auf den offenen Konfigurationsmodus ein und warum er verwendet wird. Für unsere Zwecke ermöglicht der offene Konfigurationsmodus die NCache Server, die in den Containern ausgeführt werden, um tatsächlich über mehrere Hosts kommunizieren zu können und sich zu einem geclusterten Cache zusammenzuschließen, und um zu sehen, wie dies geschieht, können wir zum Azure-Portal kommen, und das erste, was ich mir ansehen werde, ist das Virtual Netzwerk.

virtuelles Netzwerk

Okay, jetzt haben wir mehrere Knoten aus der VM-Skalierungsgruppe, aber wenn Sie genau hinsehen, sind jedem der Knoten mehrere IP-Adressen zugewiesen. Die erste IP-Adresse ist die primäre Adresse für den Host. Die anderen IP-Adressen, die mit dem Knoten verbunden sind, bilden jedoch den sekundären IP-Adresspool, und mit dem offenen Konfigurationsmodus von Service Fabric werden diese IP-Adressen den Containern zugewiesen, auf denen die NCache Server laufen. Mit den aus diesem sekundären Pool zugewiesenen IP-Adressen können die Container in den mehreren Hosts nahtlos miteinander kommunizieren, um einen Cache-Cluster auf Service Fabric zu erstellen.

Die andere Sache, die ich mir in den Ressourcen ansehen möchte, ist der Load Balancer und wenn ich zur 'Frontend IP-Konfiguration' komme, interessiert mich eigentlich die Regel 'Regel 10' und das hat mit dem Port 8251 zu tun, der wird von der verwendet NCache Web Manager, über die wir später in dieser Präsentation sprechen werden. Aber das Wichtigste zu beachten ist, dass mit der NCache Web Manager verwenden wir eine Sticky-Persistenz, wie aus den hier gezeigten Feldern „Sitzungspersistenz“ mit dem Wert „Client-IP“ ersichtlich ist.

NC-Web-Manager

Damit, wenn es mehrere Instanzen von gibt NCache Wenn Web Manager ausgeführt wird, können wir eine konsistente Benutzererfahrung zwischen dem Browser und dem Enddienst haben. Nachdem wir uns nun die Infrastruktur angesehen und erfolgreich bereitgestellt haben, werden wir uns mit der Bereitstellung der Service Fabric-Anwendung befassen und dafür zu Visual Studio zurückkehren, wo wir eine Reihe von ServiceManifest-Dateien haben, die der Dienste der Anwendung. Wir haben das NCache Service, die NCache Web Manager-Dienst, der Discovery-Dienst sowie der Client-Container-Dienst, der unsere Client-Anwendungen beherbergen wird. Wir werden auf die Details jedes dieser Dienste eingehen, nachdem wir die Anwendung bereitgestellt haben. Dazu kehren wir zu einem Lösungs-Explorer zurück und klicken hier einfach mit der rechten Maustaste auf das Projekt und den Namen der Service Fabric-Anwendung und kommen dann zu „Veröffentlichen“.

Lösungsforscher

Dadurch wird unser Bereitstellungsfenster geöffnet und wie Sie sehen können, wurde der Service Fabric-Cluster-Verbindungsendpunkt bereits erfasst. An dieser Stelle müssen wir nur noch auf „Veröffentlichen“ klicken und der Vorgang beginnt.

Bereitstellungsfenster

Das wird einige Zeit dauern, deshalb werde ich mein Video hier pausieren. Die Anwendung wurde erfolgreich bereitgestellt und wir sind im Fenster „Service Fabric Explorer“ bereit. Wie Sie sehen können, wird hier der Cluster-DNS angegeben.

Service-Fabric-Explorer

Und wenn ich mir das „DASHBOARD“ ansehe, habe ich fünf Knoten, die mit 1 Anwendung und 4 Diensten laufen. Die 4 Dienste sind im linken Bereich zu sehen. Der erste Dienst, den ich mir ansehen möchte, ist der NCache Service. Dies repräsentiert die NCache Server, die in den Containern ausgeführt werden und den geclusterten Cache bilden. Dann habe ich die NCache Web Manager-Dienst, dies stellt eine benutzerfreundliche GUI für die Erstellung und Überwachung eines Cache-Clusters dar. Dann habe ich die NCache Discovery Service, der für den Erwerb der IP-Adressen der NCache Server und deren Bereitstellung für die Client-Anwendungen. Apropos Client-Anwendungen, wir haben den Client-Container-Dienst, der einen Container darstellt, der zwei verschiedene Anwendungen enthält, von denen eine geschrieben ist .NET Core und die andere in Java. Nun werde ich der Reihe nach auf die Details jedes dieser Dienste eingehen.

NCache Clusterdienst

Die erste, die ich mir ansehen möchte, ist die NCache Cluster Service und dafür werde ich auf Visual Studio zurückkommen. Dies ist das ServiceManifest für die NCache Wie Sie sehen können, handelt es sich bei Cluster Service um einen Containerdienst, der das Bild „alachisoft/ncache'.

visuelles Studio3

Es gibt ein paar Endpunkte, die ich beim Namensdienst registriert habe, und diese sind wie folgt: Wir haben den Endpunkt „Cache-Verwaltung“, der den Port 8250 offenlegt, auf dem die Cache-Server auf Verbindungsanforderungen lauschen. Wir haben den „Cache-Client“-Endpunkt, der Port 9800 offenlegt CRUD-Operationen werden über diesen Port durchgeführt. Daneben haben wir auch die Endpunkte „Bridge-Management“ und „Bridge-Client“. Für diese aktuelle Demonstration werden wir uns nur auf die ersten beiden Endpunkte konzentrieren, die hier gezeigt werden.

visuelles Studio4

NCache Management Service

Der zweite Dienst, den wir uns ansehen, ist der NCache Management Service, das die Web Manager-GUI darstellt. Zurück zu Visual Studio, wenn ich zum ServiceManifest für die komme NCache Web Manager Service sehen wir, dass es sich auch um einen Containerdienst handelt, der das gleiche Image wie der verwendet NCache service und der Endpunkt, den wir beim Namensdienst registrieren, ist „web-management“ und der Port 8251 verfügbar macht.

visuelles Studio5

NCache Erkennungsdienst

Der dritte Service ist natürlich der NCache Erkennungsdienst und das ServiceManifest dafür ist hier angegeben.

nc-Discovery-Typ

Das NCache Discovery Service ist ein zustandsloser, zuverlässiger ASP.NET Core Web-API. Welcher konsultiert den Naming Service und erwirbt die Endpunkte, die von registriert wurden NCache hier geleistete Dienstleistung. Mit den vom Naming Service empfangenen Endpunkten kann der Discovery Service diese Informationen dann an die weitergeben NCache Kunden.

Client-Anwendungsdienste

Der vierte Dienst, den wir in unserer Anwendung haben, ist der Client-App-Dienste und dafür haben wir auch dieses ServiceManifest geöffnet und die Client-Anwendungen, die .NET Core und Java befinden sich im selben Container. Das Bild davon ist 'ncache/apps:sfclient'.

sfclient

Das Wichtige, was hier zu beachten ist, ist, dass mit der NCache service und client service verwenden wir 'open config'. Das NCache Der Dienst hat den offenen Konfigurationsmodus, damit die Container, die auf verschiedenen Hosts laufen, miteinander kommunizieren und so den Cache-Cluster bilden, während wir auf dem Client-Container einen haben NCache Client und Installation, die von der Web Manager-GUI verwendet werden, um die clientseitigen Zähler abzurufen und das Clientverhalten über die GUI überwachen zu können.

Cache-Cluster erstellen

Der nächste zu erledigende Teil ist die eigentliche Erstellung des Cache-Clusters, und dafür kehren wir zu unserem Service Fabric Explorer-Fenster zurück. Als Erstes werde ich bestätigen, dass meine Service Discovery funktioniert. Dafür gebe ich den URI ein, der sich aus dem geclusterten DNS und dem Port, auf dem der Discovery Service lauscht, der 55100 lautet, zusammensetzt.

Google-Link

Wenn ich auf Enter klicke, sehe ich, dass die IP-Adressen und die zugehörigen Ports für jeden Endpoint, der von der registriert wurde, angezeigt werden NCache Service, wurden erfolgreich präsentiert. Wenn Sie genau hinsehen, sind die IP-Adressen dieselben, die vom virtuellen Netzwerk an diese Service Fabric-Knoten als Teil des sekundären IP-Pools vergeben werden.

IP Adresse

Jetzt, wo wir die Diensterkennung ausgeführt haben, gehen wir und kommen wir zum NCache Web-Manager. Wieder geben wir das Clustered DNS ein, gefolgt von dem Port, auf dem es lauscht, nämlich 8251, und das bringt uns zum Hauptfenster der Web Manager-GUI.

Web-Manager-GUI

Jetzt werde ich demonstrieren, wie einfach es ist, einen geclusterten Cache zu erstellen, und dafür muss ich nur auf die hier gezeigte Schaltfläche „Neu“ klicken.

Neu-Schaltfläche

Ich fange an, indem ich den Namen für den Cache nenne.

Cache-Name

Behalten Sie alles andere als Standard bei. Ich werde die Partition der Replikattopologie mit asynchronem Modus verwenden.

asynchron

An dieser Stelle werde ich nun die IP-Adressen dieser Server angeben, die meinen geclusterten Cache bilden werden. Also, zuerst werde ich der ersten IP und der zweiten 11 geben. Wenn diese beiden hinzugefügt sind, können wir zur nächsten Phase kommen.

IP-Adresse2

Belassen Sie alles andere als Standard und am Ende klicken wir einfach auf „Fertig stellen“.

Fertig

Der Cache wird erstellt, wie im Hauptfenster zu sehen ist.

Cache erstellt

Jetzt, da es erstellt ist, ist es an der Zeit, es zu starten, und dafür können wir das Kontrollkästchen neben dem Namen des Caches anklicken und dann die Schaltfläche „Start“ drücken.

Anfang

Nachdem der Cache gestartet wurde, gibt es ein paar Dinge, die wir uns jetzt ansehen können. Als erstes können wir uns das Tool „Monitor“ ansehen, indem wir auf die Schaltfläche „Monitor“ klicken, während das Kontrollkästchen gedrückt ist.

Monitor

Dadurch wird ein weiteres Fenster geöffnet und wir können die Dashboards sehen, aus denen unser Überwachungstool besteht. Das erste, was Sie sich hier ansehen können, ist die „Cluster Health“. Wir sehen, dass wir 2 Server haben, wobei die aktiven und Replikatpartitionen vollständig verbunden sind, wie an der grünen Farbe zu erkennen ist.

Cluster-Cache

Wir haben die vier verschiedenen Partitionen auch hier in einem grafischen Format gezeigt.

Server-Dashboard

Es gibt ein paar Zähler, die wir uns jetzt ansehen können, einschließlich der „Anforderungen/Sekunde“, der „Hinzufügungen“, „Abrufe“, „Aktualisierungen“, „Löschungen“ usw. Der „Zähler“ ist 0, zusammen mit allen anderen CRUD-Vorgangszähler, da noch keine Client-Prozesse verbunden sind und die einmal verbundenen Client-Prozesse im Dashboard „Client-Prozess“ angezeigt werden, das die „Client-IP“, die „Prozess-ID“ und den Server anzeigt, mit dem er verbunden ist . Dies ist das „Server-Dashboard“. Das andere standardmäßig verfügbare Dashboard ist das „Kunden-Dashboard“. Hier können wir uns die verschiedenen Zähler ansehen, die von den Kunden kommen, und in der Lage sein, das Kundenverhalten zu diagnostizieren und zu überwachen.

Client-Dashboard

Das dritte standardmäßige Dashboard ist das „Berichts-Dashboard“, das eine Gesamtansicht sowohl der serverseitigen als auch der clientseitigen Leistungsindikatoren anzeigt.

Berichts-Dashboard

Führen Sie Client-Anwendungen aus

Um die Informationen in Aktion zu sehen, starten wir jetzt die Client-Anwendungen. Also, jetzt können wir unsere Client-Apps ausführen. Zurück zum Monitorfenster, ich habe hier die PowerShell im Client-Container geöffnet und befinde mich bereits im Ordner „nettester“, der die Binärdateien für die enthält .NET Core App. Ich werde einen Stapelbefehl ausführen, der als Parameter den Namen des Caches, also „democache“, sowie den URI des Cache Discovery Service, wie hier gezeigt, verwendet.

cmd

Es besteht aus dem geclusterten DNS sowie dem Port des Cache Discovery Service. Wenn ich jetzt die Eingabetaste drücke, wird der Cache von der Clientseite initialisiert und wir sehen uns einige Aktivitäten im Überwachungsfenster an. Also, ohne weitere Umschweife und hier sehen wir, dass der Client die IP-Adressen erfolgreich erhalten hat und das Cache-Handle initialisiert wurde, und dies kann vom Cluster Health Monitor bestätigt werden, der zeigt, dass die Anzahl der Clients um eins gestiegen ist.

Monitoring-Fenster

Wir sehen auch einige Aktivitäten auf den verschiedenen Dashboards, die mit den CRUD-Vorgängen verbunden sind. Wie die 'Hinzufügungen', 'Abrufe', Aktualisierungen' und 'Löschungen'. Sowie die Gesamtaktivität, die mit den 'Anfragen/Sek.' angezeigt wird. Wir sehen, dass die „Anzahl“ zugenommen hat, da der Client begonnen hat, Elemente in den Cache zu legen, und wir sehen im „Client-Prozess“ neue Einträge, die sich auf den Client-Prozess beziehen. Wir sehen die 'Client IP' und die 'Process ID' und wir sehen, dass der Client mit beiden Servern verbunden ist. Dies ist eine Funktion, die für die Partition und die Partition der Replikattopologie spezifisch ist und als clusterfähig bezeichnet wird. Wenn wir zum 'Client Dashboard' kommen, sehen wir auch hier einige Aktivitäten und wir können sehen, dass der Web-Manager die Zähler von der Client-Seite abrufen konnte.

Client-Dashboard2

Das „Berichts-Dashboard“ gibt einen Überblick. Wir sehen, dass die Instanz der Leistungsindikatoren pro Knoten hier auf den Servern angezeigt werden, und wir sehen auch die Aktivität auf der Seite des „Client-Berichts“, die ebenfalls von der Client-Seite kommt.

Bericht-Dashboard2

Jetzt, da wir erfolgreich eine Verbindung von der herstellen konnten .NET Core Client, werden wir nun versuchen, auch vom Java-Client aus eine Verbindung herzustellen. Also genau wie bei der .NET Core Application haben wir eine Batch-Datei, die die Java-Anwendung hier ausführt. Auch hier werden die gleichen Parameter verwendet, nämlich der Name des Caches sowie die URI des Cache Discovery Service.

cmd2

Jetzt werde ich das Programm ausführen und schauen, was sich im Überwachungsfenster ändert. Also drücke ich die Eingabetaste und die Anwendung wurde gestartet und erfolgreich initialisiert und wir sehen jetzt, dass jetzt 2 Clients mit jedem dieser Server verbunden sind.

Überwachungsfenster2

Kommen wir hierher und schauen wir uns an, was die Aktivität zeigt. Schauen wir uns zunächst den „Count“ an. Die „Anzahl“ hat begonnen, sich zu erhöhen, da die Anzahl der Clients zugenommen hat und beide Daten in den Cache ausgeben. Die Anfragen haben ebenfalls zugenommen, ihre Rate und hier drüben im 'Kundenprozess' sehen wir, dass hier 2 Kunden angezeigt werden. Da sie aus demselben Container ausgeführt werden, sind die Client-IPs dieselben, aber die Prozess-IDs sind unterschiedlich und stammen von .NET Core und die andere aus Java. Wenn ich zum Hauptfenster komme, möchte ich ein anderes Fenster anzeigen, nämlich das Fenster „Statistiken“. Was gibt eine andere Sicht auf das, was vor sich geht? Dazu klicke ich auf die Ellipsen-Schaltfläche und komme zur Registerkarte „Statistiken anzeigen“.

Statistiken

Wir sehen hier auch die Leistungsindikatoren pro Knoten in diesem Fenster. Hier werden die IP-Adressen angezeigt. Wir konnten unsere Clients also erfolgreich mit unseren Servern innerhalb desselben Service Fabric-Clusters verbinden.

Statistik2

Skalierung NCache Cluster

In diesem letzten Teil der Demonstration demonstrieren wir das Hinzufügen von Knoten zur Laufzeit zum Clustered Cache und wir werden sehen, dass Hinzufügungen keinen Einfluss auf die Leistung der Clientanwendungen haben. Kehren wir dafür zu unserem Hauptfenster im 'Web Manager' zurück. Um einen dritten Knoten hinzuzufügen, müssen wir nur auf den Link „Details anzeigen“ klicken, wie hier gezeigt.

Cluster-Cache2

Dies bringt uns zu einem anderen Fenster und wenn wir zum Abschnitt Serverknoten kommen, müssen wir zum Hinzufügen eines dritten Knotens nur auf die hier gezeigte Schaltfläche „Hinzufügen“ klicken.

Hinzufügen-Schaltfläche

Geben Sie die Adresse des dritten Servers an. Ich werde das hier tun und ich werde den einen mitgeben 17 und der Knoten wurde erfolgreich hinzugefügt.

node_added

Nachdem das hinzugefügt wurde, müssen wir es starten und dafür klicken wir einfach auf das Kontrollkästchen neben der IP-Adresse und klicken auf „Start“, und es wurde erfolgreich hinzugefügt.

start2

Zurück zum Hauptfenster, wenn wir diese Schaltfläche aktualisieren, sehen wir jetzt, dass es 3 Server gibt, und jetzt schauen wir uns an, was im Überwachungsfenster passiert. Wie zuvor klicken wir hier auf das Kontrollkästchen und klicken auf die Registerkarte „Monitor“. Jetzt sehen wir, dass im Dashboard „Cluster Health“ 3 Server angezeigt werden und vollständig verbunden sind.

Server-Dashboard2

Und im 'Client Process' haben wir 3 verschiedene Server, die die Anfrage von den 2 Clients liefern.

Client-Prozess

Und wenn Sie in den Abschnitt „Anzahl“ schauen, wurde die „Anzahl“ auf die 3 Knoten verteilt.

Zählabschnitt

Dies zeigt, dass die von der Partition des Replikatclusters verwendete Lastenausgleichsstrategie wirksam ist.

Damit sind wir am Ende unserer Präsentation angelangt. Wir haben uns angeschaut, wie wir das einsetzen können NCache als containerisierter Dienst innerhalb einer Service Fabric-Anwendung. Wenn Sie Fragen haben NCache oder die Präsentation, die Sie gerade gesehen haben, zögern Sie bitte nicht, uns unter zu kontaktieren support@alachisoft.com. Danke.

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