Interne Strukturen des Cache

Sie lesen die Dokumentation zu Apigee X.
Apigee Edge-Dokumentation aufrufen

In diesem Thema werden die Aufgaben des Cache unter Richtlinien wie der PopulateCache-Richtlinie, LookupCache-Richtlinie, InvalidateCache-Richtlinie und ResponseCache-Richtlinie beschrieben.

Caches

Wenn Sie einen API-Proxy mit einer Caching-Richtlinie bereitstellen, wird der kurzlebige L1-Cache automatisch erstellt. Diese kurzlebigen Daten werden dann in einer Datenbank gespeichert, in der sie für alle in einer Umgebung bereitgestellten Message Processors verfügbar sind.

In-Memory- und nichtflüchtige Cache-Ebenen

Die gemeinsam genutzten und Umgebungs-Caches basieren auf einem System auf zwei Ebenen, das aus einer speicherinternen Ebene und einem nichtflüchtigen Speicher besteht, wie in der folgenden Abbildung dargestellt. Richtlinien interagieren mit beiden Ebenen als kombiniertes Framework. Apigee verwaltet die Beziehung zwischen den Ebenen.

Caching-Richtlinien interagieren mit den Message Processors der Stufe 1, die mit dem nichtflüchtigen Speicher der Ebene 2 interagieren
  • Ebene 1 ist ein In-Memory-Cache (L1) für einen schnellen Zugriff. Jeder Message Processor-Knoten verfügt über einen eigenen In-Memory-Cache (implementiert aus Caffeine-Cache), der auf Anfragen am schnellsten antwortet.
    • L1 ist ein kurzlebiger (1 Sekunde) In-Memory-Cache.
    • Wenn das Speicherlimit erreicht ist, entfernt Apigee die Cache-Einträge aus dem Speicher (sie sind jedoch weiterhin im nichtflüchtigen L2-Cache enthalten), damit der Arbeitsspeicher für andere Prozesse verfügbar bleibt.
    • L1 wird mit einem kurzlebigen 1-Sekunden-Cache bereitgestellt, um eine schnellere Suche für gleichzeitige Anfragen mit demselben Cache-Schlüssel zu ermöglichen.
  • Ebene 2 ist ein nichtflüchtiger Cache (L2) unter dem In-Memory-Cache. Alle Message Processor-Knoten nutzen gemeinsam einen Cache-Datenspeicher (Cassandra) für nichtfllüchtige Cache-Einträge.
    • Cache-Einträge bleiben auch dann erhalten, wenn sie aus dem L1-Cache entfernt werden, beispielsweise wenn die In-Memory-Limits erreicht wurden.
    • Da der nichtflüchtige Cache von den Message Processors gemeinsam (auch in verschiedenen Regionen) genutzt werden, sind Cache-Einträge verfügbar, unabhängig davon, welcher Knoten eine Anfrage für die im Cache gespeicherten Daten empfängt.
    • Nur Einträge einer bestimmten Größe können im Cache gespeichert werden, und andere Limits für den Cache sind möglich. Weitere Informationen finden Sie unter Cache-Limits verwalten.
    • Der Cache-Inhalt in C* wird mit dem AES-256-Algorithmus verschlüsselt. Die Daten werden entschlüsselt, bevor sie von der Laufzeit verwendet werden. Sie werden verschlüsselt, bevor sie in C* geschrieben werden. Daher ist der Verschlüsselungsvorgang für Nutzer unsichtbar.

So verwenden Richtlinien den Cache

Im Folgenden wird beschrieben, wie Apigee Cache-Einträge verarbeitet, während die Caching-Richtlinien ausgeführt werden.

  • Wenn eine Richtlinie einen neuen Eintrag in den Cache schreibt (PopulateCache- oder ResponseCache-Richtlinie):
    1. Apigee schreibt den Eintrag in den In-Memory-L1-Cache nur für den Message Processor, der die Anfrage verarbeitet hat. Wenn die Speicherlimits für den Message Processor erreicht sind, bevor der Eintrag abläuft, entfernt Apigee den Eintrag aus dem L1-Cache.
    2. Apigee schreibt den Eintrag auch in den L2-Cache.
  • Wenn eine Richtlinie aus dem Cache liest (LookupCache- oder ResponseCache-Richtlinie):
    1. Apigee sucht zuerst nach dem In-Memory-L1-Cache des Message Processors, der die Anfrage verarbeitet.
    2. Wenn kein entsprechender In-Memory-Eintrag vorhanden ist, sucht Apigee nach dem Eintrag im nichtflüchtigen L2-Cache.
    3. Wenn sich der Eintrag nicht im nichtflüchtigen Cache befindet:
      • LookupCache-Richtlinie: Es wird kein Wert aus dem Cache abgerufen.
      • ResponseCache-Richtlinie: Apigee gibt die tatsächliche Antwort vom Ziel an den Client zurück und speichert den Eintrag im Cache, bis er abläuft oder ungültig wird.
  • Wenn eine Richtlinie einen vorhandenen Cache-Eintrag aktualisiert oder entwertet (InvalidateCache-, PopulateCache- oder ResponseCache-Richtlinie):
    1. Der Message Processor, der die Anfrage empfängt, löscht den Eintrag aus dem In-Memory-L1-Cache (1-Sekunden-Cache) und löscht den Eintrag ebenfalls aus dem L2-Cache.
    2. Nach einer Aktualisierung oder Entwertung ist es möglich, dass die anderen Message Processors noch weiter an dem L1-Cache festhalten.
    3. Da L1 so konfiguriert ist, dass er in einer Sekunde abläuft, ist kein Löschen/Aktualisieren-Ereignis erforderlich, um den Eintrag aus L1 zu entfernen.

Cache-Limits verwalten

Mithilfe der Konfiguration können Sie einige Aspekte des Cache verwalten. Der für den speicherinterne Cache verfügbare Speicherplatz ist durch Systemressourcen begrenzt und kann nicht konfiguriert werden. Für den Cache gelten die folgenden Einschränkungen:

  • Cache-Limits: Es gelten verschiedene Cache-Limits, z. B. Name und Wertgröße, Gesamtzahl der Caches, Anzahl der Elemente in einem Cache und Ablauf.
  • Cache im Arbeitsspeicher (L1). Die Speicherlimits für Ihren Cache können nicht konfiguriert werden. Die Limits werden von Apigee für jeden Nachrichtenprozessor festgelegt, der Caches für mehrere Kunden hostet.

    In einer gehosteten Cloud-Umgebung, in der In-Memory-Caches für alle Kundenbereitstellungen über mehrere gemeinsam genutzte Message Processors gehostet werden, besitzt jeder Message Processor einen über Apigee-konfigurierbaren Schwellenwert für den Arbeitsspeicher, damit das Caching nicht den gesamten Arbeitsspeicher der Anwendung verbraucht. Wenn der Schwellenwert für einen bestimmten Message Processor überschritten wird, werden Cache-Einträge, deren letzte Verwendung am längsten zurückliegt, aus dem Arbeitsspeicher gelöscht. Aus dem Arbeitsspeicher entfernte Einträge bleiben im L2-Cache solange gespeichert, bis sie abgelaufen oder ungültig sind.

  • Nichtflüchtiger Cache (L2): Aus dem In-Memory-Cache entfernte Einträge verbleiben gemäß den konfigurierbaren Einstellungen für die Gültigkeitsdauer im nichtflüchtigen Cache erhalten.

Konfigurierbare Optimierungen

In der folgenden Tabelle sind Einstellungen aufgeführt, mit denen Sie die Cache-Leistung optimieren können.

Einstellung Beschreibung Hinweise
Ablauffrist Gibt die Gültigkeitsdauer der Cache-Einträge an.