Bevor wir in die springen Client-Cache, lassen Sie uns etwas herauszoomen und die Grundlagen des Cachings verstehen. In der Datenverarbeitung ist ein Cache ein Hochgeschwindigkeitsspeicher, der als Hilfsspeicher verwendet wird, um teure Datenübertragungen zu vermeiden und die Leistung einfacherer Anwendungen zu optimieren, die auf einem einzelnen Serverknoten ausgeführt werden. Aber in einem verteilten System mit Lastenausgleich wird eine einzelne Anfrage von mehreren Anwendungsknoten bearbeitet. Hier verursacht der Cache einen Leistungsabfall.
Um dieser Anforderung gerecht zu werden, wird ein verteilter In-Memory-Cache für Anwendungen eingeführt, die extreme Transaktionslasten pro Sekunde bewältigen und eine hohe Verfügbarkeit erfordern lineare Skalierbarkeit.
Entwickler können aus vielen beliebten verteilten Caching-Optionen wählen, die auf dem Markt erhältlich sind, wie z NCache. NCache ist ein extrem schneller und linear skalierbarer verteilter In-Memory-Cache, der Anwendungsdaten zwischenspeichert, um teure Datenbankreisen zu reduzieren und die Reaktionszeit zu verbessern. Aber trotz alledem gibt es immer noch Raum für eine Leistungssteigerung, die durch das Hinzufügen eines Caches über einem Cache ermöglicht werden kann –ein Client-Cache.
NCache Details Verteiltes Caching in .NET Hochverfügbar NCache
Wie funktioniert der Client-Cache in NCache?
In den meisten Fällen wird ein verteilter Cache auf einer Reihe von dedizierten Cache-Servern im gesamten Netzwerk gehostet, sodass Ihre Anwendung Netzwerkreisen durchführen muss, um Daten abzurufen. Und das ist nicht so schnell wie der Zugriff auf Daten lokal und aus dem Bewerbungsprozess heraus.
Um dieses Problem zu lösen, NCache bietet die Client-Cache. Der Client-Cache fungiert als temporärer Speicher, der sich in der Nähe des Anwendungsprozesses befindet, sodass das Abrufen von Daten einfacher und schneller ist. Der Client-Cache bringt die Leistung Ihrer Anwendung auf ein höheres Niveau, da mehrere Anwendungen, die auf demselben Client-Computer ausgeführt werden, miteinander kommunizieren und Daten gemeinsam nutzen können OutProc-Modus. Der Client-Cache bringt den heißen Datensatz näher an Ihre Anwendung, sogar innerhalb des Anwendungsprozesses mit dem InProc-Modus was einen enormen Leistungsschub bringt.
In NCache, ist die Verwendung des Client-Cache recht einfach. Auf der Anwendungsseite sind keine Codeänderungen erforderlich. Es ist eine einfache Konfigurationsoption. Sie können einen Client-Cache über die erstellen NCache Web Manager oder im NCache-unterstützte PowerShell-Cmdlets. Sobald der Client konfiguriert wurde, beginnen Client-Anwendungen automatisch damit, ihn zu verwenden.
Lassen Sie uns die Funktionsweise des Client-Cache (auch First-Level- oder L1-Cache genannt) anhand eines Beispiels einer E-Commerce-Anwendung verstehen. Die Anwendung greift häufig auf den Produktkatalog und die Daten aktuell aktiver Benutzer zu. Solche Daten können im Client-Cache gespeichert werden, der auf der Client-Box läuft (wo sich die Anwendung befindet). Damit kann ein Netzwerktrip über den geclusterten Cache (auch Second-Level- oder L2-Cache genannt) vermieden werden und Daten aus dem L1-Cache viel schneller bereitgestellt werden.
Jetzt müssen Sie darüber nachdenken, wie Daten zwischen zwei Caches synchronisiert werden, damit die Anwendung immer mit aktualisierten Daten aus dem L1-Cache versorgt wird.
Datensynchronisierung zwischen dem L1- und L2-Cache
Um sicherzustellen, dass die Anwendung immer aktuelle Daten erhält, arbeiten zwei Hintergrund-Threads im Client-Cache. Diese beiden leistungsstarken Synchronisierungsmechanismen, die im Client-Cache ausgeführt werden, stellen sicher, dass die Anwendung immer die neuesten Daten mit zusätzlicher Leistung und Skalierbarkeit erhält. Die zwei Hintergrund-Threads sind:
Benachrichtigungsbasierter Thread
Wenn Daten zum L1-Cache hinzugefügt werden, registriert er sofort eine Datenänderungsbenachrichtigung, und der L2-Cache verfolgt die Cache-Elemente, die der L1-Cache enthält, und überwacht Änderungen, wenn eine Aktualisierung/Entfernung von Daten auftritt. Bei einer Änderung von Daten im L2-Cache empfängt der L1-Cache eine Änderungsbenachrichtigung und als Antwort synchronisiert sich der L1-Cache selbst mit L2.
Umfragebasierter Thread
Dies ist ein Fallback-Mechanismus, der nur ausgelöst wird, wenn die Kommunikation zwischen L1- und L2-Cache aufgrund einer Netzwerkstörung oder eines Verbindungsverlusts gestoppt wird. In diesem Fall wartet der L1-Cache 10 Sekunden und pollt sich dann selbst und fordert die Datenänderungen im L2-Cache an. Nach Erhalt der Änderungsbenachrichtigungen synchronisiert er sich selbst mit dem L2-Cache.
Um die Vorteile des Client-Cache voll auszuschöpfen, können Sie ihn in einem der beiden verfügbaren Isolationsmodi auf Prozessebene verwenden.
Isolationsmodi im Client-Cache
Client-Cache wird auf dem Clientknoten ausgeführt, auf dem Ihre Anwendungen ausgeführt werden. Abhängig von Ihren Leistungsanforderungen und der Anwendungsarchitektur können Sie einen der folgenden Isolationsmodi auf Prozessebene auswählen, die vom Client-Cache unterstützt werden. NCache Der Client-Cache existiert in zwei Modi: InProc und OutProc.
InProc-Modus:
In InProc-Modus, Client Cache wird innerhalb des Anwendungsprozesses ausgeführt, wodurch die Kommunikation zwischen Prozessen entfällt. Der InProc-Modus bietet der Anwendung maximale Leistung, da die Daten in Objektform bleiben, wodurch die Kosten reduziert werden Serialisierung und Deserialisierung.
Im InProc-Modus werden Daten nicht zwischen anderen Anwendungsinstanzen geteilt, sodass jede Instanz der Anwendung eine dedizierte Client-Cache-Instanz hostet, was die Leistung steigert.
OutProc-Modus:
In OutProc-Modus, Client-Cache wird in seinem dedizierten Prozess auf dem Client-Knoten ausgeführt. Die Kommunikation zwischen Anwendungen und dem Client-Cache erfolgt über TCP-Sockets. Der OutProc-Modus unterstützt die gemeinsame Nutzung von Daten, sodass mehrere Anwendungsinstanzen mit demselben Client-Cache kommunizieren können. Es hat einen großen Vorteil, da Daten von mehreren Anwendungen gemeinsam genutzt werden, sodass Daten, die von einer Anwendung geladen oder aktualisiert werden, anderen zur Verfügung stehen.
Performance-Vergleich von InProc- und OutProc-Modus:
Es gibt mehrere Faktoren, anhand derer die Leistung des InProc- und OutProc-Modus gemessen wird, dh Datenverfügbarkeit, Ressourcenverbrauch und Geschwindigkeit.
Datenverfügbarkeit: Im OutProc-Modus führt der Cache-Neustart nicht zu Datenverlust, was für Datenstabilität sorgt. Wohingegen im InProc-Modus ein Cache-Neustart zu Datenverlust führt.
Ressourcenverbrauch: Der InProc-Modus bietet maximale Leistung, wenn Ressourcen wie Arbeitsspeicher nicht begrenzt sind, da jede Client-Cache-Instanz ihre eigene Kopie der Daten enthält. Der OutProc-Modus erfordert im Vergleich zum InProc-Modus weniger physische Ressourcen.
Geschwindigkeit: Der Client-Cache-InProc-Modus ist superschnell, da er wie ein Objekt auf Ihrem Heap ist und die Dinge deserialisiert hält, wodurch Kosten gespart werden Serialisierung/Deserialisierung die Sie für jeden OutProc oder jeden Fernzugriff auf den Cache tun müssen.
NCache Details Client-Cache Ereignisbenachrichtigungen im Cache
Der Betriebsablauf des Client-Cache
Der Client-Cache befindet sich näher an der Anwendungsschicht, und der Client-Cache ist die Teilmenge des geclusterten Caches. Alle Operationen erfolgen also verteilt.
Alle schlüsselbasierten Lesevorgänge werden direkt im L1-Cache ausgeführt, schlüsselbasierte Schreibvorgänge wie Hinzufügen, Einfügen und Entfernen werden zuerst im L2-Cache ausgeführt und dann zum L1-Cache hinzugefügt, bevor sie zur Anwendung zurückkehren.
Daten werden an den L1-Cache zurückgegeben, bevor sie an die Anwendung zurückgegeben werden, sodass sie beim nächsten Mal, wenn dieselben Daten angefordert werden, direkt vom L1-Cache bereitgestellt werden.
Nicht schlüsselbasierte Lese- und Schreibvorgänge werden nur im L2-Cache ausgeführt, da der L1-Cache die Teilmenge des L2-Cache enthält.
Andere Client-Cache-Instanzen werden durch Hintergrunddaten aktualisiert Synchronisationsmechanismus.
Synchronisierungsmodi im Client-Cache:
Ein Client-Cache ist zwar lokal für Ihre Anwendung, aber nicht eigenständig. Stattdessen wird es immer mit dem gruppierten Cache synchronisiert. Dadurch wird sichergestellt, dass die Daten im Client-Cache niemals veraltet sind.
NCache Der Client-Cache bietet zwei Modi für Synchronisation von Daten zwischen dem Client-Cache und dem Cluster-Cache. Der Client-Cache enthält eine Kopie der geclusterten Cache-Daten. Jede Änderung, die im Cluster-Cache auftritt, muss im Client-Cache synchronisiert werden, da die Anwendungsschicht direkt mit dem Client-Cache kommuniziert. Zwei Modi für die Datensynchronisation sind optimistisch und pessimistisch.
Optimistischer Modus ist der Standardmodus für die Datensynchronisierung in NCache. Die Synchronisierung findet im Hintergrund statt, und wenn eine Anwendung die Daten anfordert, werden sie aus dem Client-Cache an die Anwendung zurückgegeben.
Anwendungen, die sensibler sind und eine frische Datennutzung erfordern pessimistischer Modus zur Datensynchronisation. Wenn eine Anwendung die Daten anfordert, überprüft der L1-Cache die Version mit dem L2-Cache und stellt die aktualisierten Daten bereit.
Zusammenfassung
NCache ermöglicht es Ihnen, den Client-Cache mit einem verteilten Cache zu nutzen. Das Beste an der Verwendung von Client Cache ist, dass auf der Benutzerseite keine Programmierung vorgenommen werden muss. Es handelt sich um eine einfache Konfigurationseinstellung, und der Client-Cache wird automatisch angeschlossen. Der Client-Cache steigert die Leistung in vielerlei Hinsicht für Anwendungen, die mehr Lese- als Schreibvorgänge ausführen. Laden Sie also eine voll funktionsfähige 60-Tage-Testversion von herunter NCache Enterprise und probiere es selbst aus.