This is the Trace Id: 4ce56f692abafa5d84c37a45d0dc4802
Zu Hauptinhalt springen
Azure
Farbverlaufshintergrund

Was ist Zwischenspeichern?

Erfahren Sie, wie das Zwischenspeicherung die Systemleistung und -effizienz verbessert.

Bedeutung des Zwischenspeicherns

Durch das Zwischenspeichern werden wiederverwendbare Kopien häufig verwendeter Daten im Arbeitsspeicher gespeichert, sodass Anwendungen wiederholte Datenbankaufrufe vermeiden und Ergebnisse schneller zurückgeben.

Wesentliche Punkte

  • Beim Zwischenspeichern werden häufig angeforderte Daten im schnellen Arbeitsspeicher gespeichert, sodass Apps schneller reagieren können, ohne jedes Mal die primäre Datenbank zu erreichen.
  • Eine typische Anforderung überprüft zuerst den Cache, ruft dann bei einem Fehler aus dem Quellspeicher ab und aktualisiert den Cache mit gängigen Lese-/Schreibmustern.
  • Richtig eingesetzt senkt das Zwischenspeichern die Latenz und die Back-End-Last, hilft bei Lastspitzen und unterstützt gängige Szenarien wie Websites, APIs und Sitzungstatus.
  • Das Zwischenspeichern wird auf mehreren Ebenen angezeigt und funktioniert am besten, wenn Sie stabile datenlastige Lesevorgänge auswählen und eine dauerhafte Quelle der Wahrheit mit einem Fallbackplan beibehalten.

Grundlegendes zum Zwischenspeichern

Was ist ein Cache?

Beim Zwischenspeichern werden Key-Value-Daten im temporären Speicher (z. B. in einer nichtrelationalen strukturierten Abfragesprache NoSQL-Datenbank) gespeichert, damit Anwendungen schneller darauf zugreifen können als aus herkömmlichem Speicher. In Cloudspeicher-Architekturen, in denen Anforderungen oft über Netzwerke laufen und gemeinsam genutzte Dienste berühren, kann Zwischenspeichern helfen, die Antwortzeiten niedrig zu halten und wiederholte Arbeit zu reduzieren.

Wie funktioniert das Zwischenspeichern?

Die meisten Systeme behalten eine dauerhafte „Quelle der Wahrheit“ (eine Datenbank) für vollständige Datasets und behalten dann einen Cache für vorübergehende Teilmengen bei, die häufig gelesen werden. Wenn eine Anfrage eingeht, überprüft die App zuerst den Cache. wenn die Daten vorhanden sind, werden sie schnell zurückgegeben, ohne das Back-End erneut abzufragen. Entwickelnde können auch verarbeitete Daten zwischenspeichern und wiederverwenden, um Anforderungen schneller zu verarbeiten als Standardabfragen für relationale Datenbanken, SQL-Datenbanken oder Open-Source-PostgreSQL-Datenbanken..

Wichtige Prinzipien hinter der Zwischenspeicherung

1. Zwischenspeichern Sie Inhalte, die häufig gelesen werden

Gute Kandidaten sind wiederholt gelesene Daten und Daten, die sich selten ändern (z. B. Produkt- und Preisinformationen oder freigegebene statische Ressourcen, die teuer zu erstellen sind).

2. Zwischenspeichern der Ergebnisse wiederholter Arbeit

Wenn ein Vorgang Daten transformiert oder eine komplizierte Berechnung durchführt, kann das Zwischenspeichern des Ergebnisses eine Neuberechnung für nachfolgende Anforderungen vermeiden.

3. Verwenden von Cacheebenen bei Bedarf

Entwickler verwenden mehrschichtige Caches („Cacheebenen“), um verschiedene Daten je nach Bedarf in separaten Caches zu speichern. Das Hinzufügen einer oder mehrerer Cacheebenen kann den Durchsatz und die Latenz in einer Datenschicht verbessern.

4. Sitzungszustand für reaktionsfähige Apps geschlossen lassen

In-Memory-Speicher werden häufig verwendet, um große Mengen von Sitzungsdaten wie Benutzereingaben, Einkaufswageneinträge oder Personalisierungseinstellungen für kurze Zeiträume zu speichern. Bei zustandsbehafteten Apps speichern Teams auch den Sitzungszustand im Cache, damit die App zustandslos sein kann.

Auswirkungen auf die Systemleistung

Das Zwischenspeichern kann die Leistung auf einige konkrete Weise verbessern:

  • Es ist schneller, die Daten aus einem In-Memory-Cache zu lesen als über einen datenträgergestützten Datenspeicher auf diese zuzugreifen.
  • Weniger Abfragen können die Last senken und den Bedarf an einer Skalierung der Datenbankinfrastruktur verringern, was auch Kosten reduzieren kann.
  • Cacheebenen können den Durchsatz und die Latenz verbessern, und In-Memory-Caches können dazu beitragen, die Latenz bei Auslastungsspitzen zu verringern.
  • Eine Cacheinstanz kann Millionen von Anforderungen pro Sekunde verarbeiten und bietet Durchsatz, den viele Datenbanken nicht bieten können.

Wie funktioniert das Zwischenspeichern?

Der grundlegende Flow: Cache und Quelldatenspeicher

In vielen Clouddesigns befindet sich ein Cache neben einem primären Datenspeicher (z. B. einer Datenbank). Der primäre Speicher hält den vollständigen, dauerhaften Datensatz auf dem Cloudserver, während der Cache eine kleinere, temporäre Teilmenge speichert, die schneller gelesen werden kann.

Ein gängiges Setup ist eine eigenständige Cacheebene oder ein Cache, der sich innerhalb der App- oder Datenbankebene befindet und basierend darauf ausgewählt wird, wo Sie schnelle Lesevorgänge benötigen.

Cacheebenen: Mehr als ein „schneller Pfad“

Einige Systeme verwenden mehrstufiges Zwischenspeichern(„Cache-Ebenen“), damit verschiedene Datenarten je nach Bedarf in unterschiedlichen Caches liegen. Das Hinzufügen einer oder mehrerer Cache-Ebenen kann Durchsatz und Latenz für die Datenebene verbessern und die Gesamtkosten senken, indem die Back-End-Last verringert wird.

Was zwischengespeichert wird (und warum)

Teams cachen normalerweise Daten, die in einige wenige Gruppen fallen:

  • Häufig gelesene Daten (vor allem, wenn sie sich selten ändern), zum Beispiel Produkt- oder Preisinformationen, und gemeinsam genutzte statische Ressourcen, deren Aufbau teuer ist.
  • Wiederholte Berechnungen, bei denen ein Vorgang Daten transformiert oder eine komplizierte Berechnung durchführt. Durch das Zwischenspeichern des Ergebnisses wird vermieden, dass die gleiche Arbeit für spätere Anforderungen erneut ausgeführt wird.
  • Sitzungszustand für zustandsbehaftete Apps, bei denen das Speichern des Sitzungszustands im Cache dazu beitragen kann, die App-Ebene zustandslos zu halten.

Allgemeine Zwischenspeicherungsmuster (Lese-/Schreibworkflows)

Es gibt mehrere Standardmethoden, wie Apps aus einem Cache lesen und in einen Cache schreiben. Hier sind die gängigsten Muster und ihre Bedeutung in der Praxis aufgeführt.

  • Cachefremde Daten: Laden Sie Daten bei Bedarf aus einem Datenspeicher.
  • Read-Through: Aus dem Cache lesen, und der Cache ruft bei Bedarf Daten aus dem Datenspeicher ab.
  • Write-Through: Schreiben sie in den Cache, und synchronisiert sie synchron mit dem Datenspeicher.
  • Write-Back (Write-Behind): In den Cache schreiben, und er schreibt die Daten in Batches in den Datenspeicher zurück.
  • Write-Around: In den Datenspeicher schreiben und aus dem Cache lesen. Der Cache wird bei Bedarf aktualisiert.

Warum das die Last reduziert und Prozesse beschleunigt

Die Verwendung von Cacheebenen kann den Durchsatz und die Latenz verbessern, indem allgemeine Anforderungen aus dem Cache verarbeitet werden, anstatt den Back-End-Speicher wiederholt abzufragen. Dies kann die Notwendigkeit verringern, die Datenbankinfrastruktur zu skalieren, da weniger Anfragen die Datenbank überhaupt erreichen.

Bei Apps mit Lastspitzen können In-Memory-Caches helfen, die Latenz zu verringern, indem häufig angeforderte Daten dort bereitgehalten werden, wo sie verwendet werden.

Kurzanleitung: Auswählen eines Musters

Verwenden Sie diese Hinweise als Ausgangspunkt bei der Wahl eines Workflows:

  • Bevorzugen Sie Cache-Aside, wenn die App selbst entscheiden kann, was gespeichert und wann aktualisiert werden soll.
  • Bevorzugen Sie Read-Through, wenn der Cache das Abrufen aus dem Datenspeicher bei Bedarf übernehmen soll.
  • Ziehen Sie Write-Through oder Rückschreiben in Betracht, wenn das Schreibverhalten wichtig ist und ein definierter Ansatz für die erneute Synchronisierung gewünscht ist.

Vorteile und Anwendungen der Zwischenspeicherung

Schnellere Antworten mit weniger Back-End-Arbeit

Das Zwischenspeichern verbessert die Anwendungsleistung, da das Lesen aus einem In-Memory-Cache schneller ist als das Lesen aus einem datenträgergesteuerten Datenspeicher. Wenn mehr Anfragen aus dem Cache verarbeitet werden, senden Systeme weniger Abfragen an Back-End-Datenbanken, wodurch die Notwendigkeit der Skalierung der Datenbankinfrastruktur und die damit verbundenen Kosten reduziert werden können.

Was Sie durch Zwischenspeichern häufig gewinnen
  • Geringere Latenz bei allgemeinen Lesevorgängen, da häufig angeforderte Daten von einer schnelleren Ebene stammen.
  • Geringere Datenbankauslastung und -kosten, da das Zwischenspeichern zu weniger Datenbankabfragen und weniger Druck bei der Überbereitstellung von Datenbankinstanzen führt.
  • Besser vorhersagbarer Durchsatz, da ein Cache im Vergleich zu vielen Datenbanken ein sehr hohes Anforderungsvolumen verarbeiten kann.
  • Reibungsloserer Umgang mit Datenverkehrsspitzen, da In-Memory-Caches die Latenz in Zeiträumen mit hohem Durchsatz verringern können.

Bessere Nutzung von Compute- und Speicherressourcen

Das Zwischenspeichern hilft dabei, wiederholte Arbeit zu reduzieren. Daten, die wiederholt gelesen werden – oder deren Erstellung kostspielig ist – können einmal gespeichert und wiederverwendet werden. Wenn ein Vorgang eine komplizierte Berechnung durchführt oder Daten transformiert, reduziert das Zwischenspeichern des Ergebnisses die wiederholte Berechnung für nachfolgende Anforderungen.

Gängige Kandidaten für „guten Cache“
  • Daten, die sich nur selten ändern (z. B. Produkt- und Preisinformationen).
  • Freigegebene statische Ressourcen, die teuer zu erstellen sind.
  • Ergebnisse von Vorgängen, die wiederholt berechnet werden.

Reale Anwendungen (bei denen das Zwischenspeichern angezeigt wird)

Websites: Schnellere Seitenladevorgänge und weniger Roundtrips

Bei vielen Websites werden Seitenausgaben (z. B. HTML- und Clientskripts) zwischengespeichert, sodass der Server die zwischengespeicherte Ausgabe zurückgeben kann, anstatt den Seitencode jedes Mal erneut auszuführen. Das Zwischenspeichern unterstützt auch Web multimediale Szenarien durch Webcaches und Netzwerkzwischenspeicherung, z. B. Content Delivery Networks (CDNs).

Typische Verwendungsmöglichkeiten auf Websites
  • Zwischenspeichern der vollständigen Seitenausgabe für Wiederholungsansichten.
  • Zwischenspeichern statischer Ressourcen über das Zwischenspeichern von Netzwerken/CDNs.
Apps und APIs: Schnellere Lesevorgänge für freigegebene Daten

Apps speichern häufig vorübergehende Teilmengen von Daten in einem Cache für den schnellen Abruf, während die primäre Datenbank das vollständige dauerhafte Dataset beibehält. Das Zwischenspeichern verarbeiteter Daten und deren Wiederverwendung kann Anforderungen schneller verarbeiten als Standarddatenbankabfragen.

Allgemeine App-Muster
  • Speichern Sie häufig gelesene Verweisdaten (z. B. Preise), um wiederholte Datenbankaufrufe zu reduzieren.
  • Zwischenspeichern von berechneten Ergebnissen, um kostspielige Arbeit zu vermeiden.
Server und Dienste: Skalieren von Lese- und Glättungsspitzen

Teams fügen häufig eine oder mehrere Cacheebenen hinzu, um den Durchsatz und die Latenz zu verbessern, allgemeine Abfragen aus dem Cache zu verarbeiten und die Datenbanklast zu reduzieren. In-Memory-Caches können hilfreich sein, wenn Nutzungsspitzen und Durchsatzbedarf steigen, wodurch die Latenz in diesen Zeiträumen entschärfe wird.

Wo dies am meisten hilft
  • Endpunkte mit hohem Lesezugriff, bei denen dieselben Schlüssel häufig angefordert werden.
  • Systeme mit regelmäßigen Lastspitzen.
Geschäftssysteme: Sitzungszustand und freigegebene Betriebsdaten

Das Zwischenspeichern wird häufig verwendet, um große Mengen von kurzlebigen Sitzungsdaten (z. B. Benutzereingaben oder Personalisierungseinstellungen) in einem Speicher im Arbeitsspeicher zu speichern. Einige Teams speichern den Sitzungszustand auch im Cache, damit zustandsbehaftete Apps die App-Ebene zustandslos halten können. Für Betriebssysteme sind Daten, die sich nur selten ändern, z. B. Produkt- und Preisinformationen, ein gängiges Zwischenspeicherziel.

Beispiele, die Sie Geschäftsworkloads zuordnen können
  • Sitzungsdaten für Web- und mobile Apps (kurzlebig, hohe Volumen).
  • Häufig gelesene betriebliche Referenzdaten, zum Beispiel Preise und gemeinsam genutzte Ressourcen.

Cachetypen

Das Zwischenspeichern wird auf mehreren Ebenen zwischen einer App und ihren Daten angezeigt, einschließlich clientseitiger und serverseitiger Ansätze.

Browsercache (clientseitig)

Ein Browsercache speichert Kopien statischer Ressourcen auf dem Gerät eines Benutzers, sodass wiederholte Besuche diese Dateien wiederverwenden können, anstatt sie erneut herunterzuladen.

Gängige Anwendungsfälle
  • Statische Websiteressourcen wie Bilder, CSS-Dateien und JavaScript-Dateien.
  • Reduzieren von Roundtrips zum Ursprungsserver für zuvor abgerufene Ressourcen.

Serverseitiger Cache

Die serverseitige Zwischenspeicherung erfolgt in den Prozessen, die Geschäftsdienste remote ausführen, und nicht auf dem Gerät des Endbenutzers. Serverseitige Caches sind häufig entweder privat (lokal für eine App-Instanz) oder freigegeben (von vielen App-Instanzen verwendet).

Gängige Anwendungsfälle
  • Privater In-Memory-Cache innerhalb eines einzelnen Prozesses für geringe Mengen statischer Daten.
  • Freigegebener Cacheservice, damit mehrere App-Instanzen dieselben zwischengespeicherten Werte lesen und unterschiedliche Versionen zwischen Instanzen vermeiden.
  • Daten, die häufig gelesen, aber selten geändert werden (z. B. Produkt- und Preisreferenzdaten).

CDN-Cache

Ein CDN speichert Inhalte auf Edgeservern zwischen, die sich näher an den Endbenutzern befinden, sodass Anforderungen nicht immer zurück an den Ursprung gesendet werden. Im Gegensatz zu einem Browsercache (ein Benutzer) wird ein CDN-Cache freigegeben. Die Anforderung eines Benutzers kann Inhalte auffüllen, die ein anderer Benutzer später empfängt.

Gängige Anwendungsfälle
  • Freigegebene Übermittlung zwischengespeicherter Inhalte von Edgespeicherorten, um Ursprungsanforderungen zu reduzieren.
  • Statische Ressourcen, die davon profitieren, dass sie in der Nähe von Benutzern bereitgestellt werden (die gleichen Arten von Ressourcenbrowsern werden zwischengespeichert, aber von Benutzern gemeinsam genutzt).

CPU-/Arbeitsspeichercache

Caching ist nicht nur ein Cloud Computing-Muster, sondern wird auch in Hardware- und Speicherebenen verwendet.

Der CPU-Cache ist ein kleiner, schneller Speicherbereich in der Nähe (oder auf dem Prozessor), in dem Kopien häufig verwendeter Daten und Anweisungen gespeichert werden, um den Zeitaufwand für das Warten auf den Hauptspeicher zu reduzieren.

Speicher-(In-Memory-)Cache ist der einfachste Typ eines Softwarecaches: ein In-Memory-Speicher im Adressraum eines einzelnen Prozesses, auf den dieser Prozess direkt zugreift.

Gängige Anwendungsfälle
  • CPU-Cache: Wiederholter Zugriff auf die gleichen Anweisungen/Daten ohne häufigen Zugriff zum Hauptspeicher.
  • In-Memory-Cache: Schnelles Lesen von kleinen Mengen relativ statischer Daten innerhalb eines ausgeführten Diensts.

Verteiltes Zwischenspeichern

Ein verteilter Cache erstreckt sich über mehrere Server, sodass der Cache wachsen kann und die Transaktionskapazität über einen Computer hinausgeht. Viele freigegebene Cachedienste verwenden einen Servercluster und verteilen zwischengespeicherte Daten über den Cluster. Das Skalieren des Caches kann so einfach wie das Hinzufügen weiterer Server sein. Einige verteilte Designs schichten Caches auch. Bei einem Fehler in einer Ebene wird aus einem vorgelagerten Anbieter geladen und das Ergebnis anschließend lokal für die nächste Anforderung gespeichert.

Gängige Anwendungsfälle
  • Eine freigegebene Cacheebene für mehrere App-Instanzen und -Computer.
  • Workloads, die Cachekapazität und Durchsatz benötigen, die einen einzelnen Host überschreiten.
  • Mehrstufige Cachesetups, bei denen das Abrufen aus upstream ausgelassen wird, und anschließend eine lokale Kopie für nachfolgende Anforderungen beibehalten.

Erste Schritte mit dem Zwischenspeichern

Warum das Zwischenspeichern immer noch wichtig ist

Beim Zwischenspeichern werden häufig verwendete Daten näher an dem Ort gespeichert, an dem sie verwendet werden. Dies kann die Antwortzeiten verbessern und einem System helfen, mehr gleichzeitige Anforderungen zu verarbeiten. Außerdem kann es die Konkurrenz um Ressourcen im ursprünglichen Datenspeicher verringern, etwa wenn eine Datenbank nur über begrenzte Verbindungen verfügt.

In verteilten Anwendungen erfolgt das Zwischenspeichern häufig an mehreren Stellen – clientseitig (z. B. in einem Browser) und serverseitig (in einer Anwendung oder einem freigegebenen Cachedienst).

Ein praktischer Einstieg

Fangen Sie klein an und konzentrieren Sie sich auf die Daten, die den klarsten Nutzen bringen:

  • Zwischenspeichern von leseintensiven, langsam abzurufenden Daten, die sich selten ändern (z. B. Verweisdaten).
  • Entscheiden Sie, wann Daten in den Cache gelangen:
    • Nach der ersten Anforderung bei Bedarf speichern Sie nur, was tatsächlich verwendet wird.
    • Füllen Sie einige Elemente beim Start vorab auf (Seeding), wenn Sie wissen, dass sie frühzeitig angefordert werden, während Sie auf Startlast im ursprünglichen Speicher achten.
  • Wählen Sie ein Muster aus, das Sie verwalten können. Das cachefremde Muster ist üblich, und seine Anleitung hebt hervor, wie sich Ablauf, Entfernung und Konsistenz auf die Ergebnisse auswirken.

Halten Sie zwischengespeicherte Daten aktuell und Ihr System belastbar

Ein Cache enthält normalerweise Kopien von Daten aus einem primären Datenspeicher. Deshalb ist die Aktualität wichtig:

  • Verwenden Sie Ablaufrichtlinien, um zu begrenzen, wie lange Daten im Cache verbleiben können, bevor sie aktualisiert werden.
  • Beobachten Sie das Entfernungsverhalten, wenn Caches aufgefüllt werden (viele Systeme entfernen standardmäßig am seltensten verwendete Elemente).
  • Betrachten Sie den Cache nicht als einzigen Speicherort für kritische Daten. Bewahren Sie die Quelle der Wahrheit in persistentem Speicher auf, damit das System weiterlaufen kann, wenn der Cache nicht verfügbar ist.
  • Planen Sie einen Fallback-Pfad zum ursprünglichen Datenspeicher ein, falls der Cache nicht erreichbar ist, und füllen Sie den Cache bei Lesezugriffen wieder auf.

Caching ist ein zentraler Baustein für moderne Systeme, weil es zu vielen Architekturen passt – von einzelnen Diensten bis hin zu verteilten Apps und Edge-Bereitstellung. Für einen verwalteten In-Memory-Cache Cloudanbieter können Sie Azure näher kennenlernen.

Farbverlaufshintergrund
Ressourcen

Ressourcen

Training
Azure-Ressourcen
Erkunden Sie die neueste Entwicklertechnologie und lernen Sie neue Fähigkeiten.
Bildung
Entwicklerressourcen für Studierende
Erwerben Sie Fähigkeiten, um Ihre Karriere voranzubringen und die Welt zum Positiven zu verändern.
Veranstaltungen
Azure-Veranstaltungen und -Webinare
Erwerben Sie neue Kenntnisse, entdecken Sie neue Technologien, und tauschen Sie sich mit der Community aus – digital oder persönlich.
Häufig gestellte Fragen

Häufig gestellte Fragen

  • Caching hält häufig genutzte Daten im schnellen Speicher, damit Apps Ergebnisse zügig zurückgeben können, ohne bei jeder Abfrage auf die primäre Datenbank zuzugreifen. Dadurch werden Latenz und Last im Back-End reduziert. So können Systeme mehr gleichzeitige Anforderungen verarbeiten.
  • Das Zwischenspeichern verbessert die Leistung, indem häufig angeforderte Daten aus schnellem Arbeitsspeicher bereitgestellt werden. Dies verringert die Latenz, reduziert die Datenbanklast und die Kosten, unterstützt ein hohes Anforderungsvolumen und hilft bei Datenverkehrsspitzen.
  • Ein Beispiel ist Output-Caching: Ein Webserver speichert das gerenderte Ergebnis einer Seite (HTML und Clientskripts) im Speicher und stellt dieses zwischengespeicherte Ergebnis bei wiederholten Besuchen bereit, statt den Seitencode erneut auszuführen.
  • Ein Cache speichert eine kleinere, temporäre Teilmenge von Daten für den schnellen Zugriff, während eine Datenbank oder ein Speicher das vollständige, dauerhafte Dataset für die langfristige Aufbewahrung enthält. Wenn zwischengespeicherte Daten verloren gehen, ist die dauerhafte Kopie weiterhin in der Datenbank vorhanden. Caches sind nicht als maßgeblicher Speicher für kritische Daten gedacht.