Processi interni della cache

Stai visualizzando la documentazione di Apigee Edge.
Vai alla documentazione di Apigee X.
info

Questo argomento descrive il funzionamento della cache sotto i criteri come Populate Cache policy, LookupCache policy, InvalidateCache policy e Response Cache policy.

Cache condivise e di ambiente

Ogni criterio di memorizzazione nella cache configurato può utilizzare uno di due tipi di cache: una cache condivisa inclusa a cui le tue applicazioni hanno accesso e una o più cache basate sull'ambiente che crei.

  • Cache condivisa:per impostazione predefinita, i proxy hanno accesso a una cache condivisa in ogni ambiente. La cache condivisa funziona bene per i casi d'uso di base.

    Puoi utilizzare la cache condivisa solo utilizzando i criteri di memorizzazione nella cache, non l'API di gestione. Per fare in modo che un criterio di memorizzazione nella cache utilizzi la cache condivisa, ometti semplicemente l'elemento <CacheResource> del criterio.

  • Cache dell'ambiente:quando vuoi configurare le proprietà della cache con i valori che scegli, puoi creare una cache basata sull'ambiente. Per scoprire di più sulla creazione di una cache, consulta Creare e modificare una cache dell'ambiente.

    Quando crei una cache dell'ambiente, ne configuri le proprietà predefinite. Puoi fare in modo che un criterio di memorizzazione nella cache utilizzi la cache dell'ambiente specificando il nome della cache nell'elemento <CacheResource> del criterio.

Informazioni sulla crittografia della cache

Edge per il cloud pubblico: la cache viene criptata solo nelle organizzazioni PCI e HIPAA. La crittografia per queste organizzazioni viene configurata durante il provisioning dell'organizzazione.

Livelli di cache in memoria e persistenti

Sia le cache condivise sia quelle dell'ambiente sono basate su un sistema a due livelli costituito da un livello in memoria e da un livello permanente. I criteri interagiscono con entrambi i livelli come framework combinato. Edge gestisce la relazione tra i livelli.

  • Il livello 1 è una cache in memoria (L1) per un accesso rapido. Ogni nodo di elaborazione dei messaggi (MP) ha una propria cache in memoria (implementata da Ehcache) per una risposta più rapida alle richieste.
    • Su ogni nodo, una certa percentuale di memoria è riservata all'utilizzo dalla cache.
    • Quando viene raggiunto il limite di memoria, Apigee Edge rimuove le voci della cache dalla memoria (anche se rimangono nella cache L2 persistente) per garantire che la memoria rimanga disponibile per altri processi.
    • Le voci vengono rimosse in base all'ora dell'ultimo accesso, con le voci meno recenti rimosse per prime.
    • Queste cache sono limitate anche dal numero di voci al loro interno.
  • Il livello 2 è una cache permanente (L2) sotto la cache in memoria. Tutti i nodi di elaborazione dei messaggi condividono un datastore della cache (Cassandra) per la persistenza delle voci della cache.
    • Le voci della cache rimangono qui anche dopo essere state rimosse dalla cache L1, ad esempio quando vengono raggiunti i limiti in memoria.
    • Poiché la cache persistente è condivisa tra i processori di messaggi (anche in regioni diverse), le voci della cache sono disponibili indipendentemente dal nodo che riceve una richiesta per i dati memorizzati nella cache.
    • È possibile memorizzare nella cache solo voci di una determinata dimensione e si applicano altri limiti alla cache. Vedi Gestire i limiti della cache.

Potrebbe interessarti anche Apigee Edge Caching In Detail, nella community Apigee.

Come i criteri utilizzano la cache

Di seguito viene descritto in che modo Apigee Edge gestisce le voci della cache quando i tuoi criteri di memorizzazione nella cache svolgono il loro compito.

  • Quando un criterio scrive una nuova voce nella cache (norma PopulateCache o ResponseCache):
    1. Edge scrive la voce nella cache L1 in memoria solo nell'elaboratore dei messaggi che ha gestito la richiesta. Se i limiti di memoria dell'elaboratore dei messaggi vengono raggiunti prima della scadenza della voce, Edge rimuove la voce dalla cache L1.
    2. Edge scrive anche la voce nella cache L2.
  • Quando un criterio legge dalla cache (criterio LookupCache o ResponseCache):
    1. Edge cerca prima la voce nella cache L1 in memoria dell'elaboratore dei messaggi che gestisce la richiesta.
    2. Se non è presente una voce in memoria corrispondente, Edge la cerca nella cache permanente L2.
    3. Se la voce non è presente nella cache permanente:
      • Criterio LookupCache: nessun valore viene recuperato dalla cache.
      • Criterio ResponseCache: Edge restituisce la risposta effettiva dal target al client e memorizza la voce in cache fino alla scadenza o all'invalidazione.
  • Quando una norma aggiorna o rende non valida una voce della cache esistente (norma InvalidateCache, PopulateCache o ResponseCache):
    1. Il processore di messaggi che riceve la richiesta invia una trasmissione per aggiornare o eliminare la voce nella cache L1 su se stesso e su tutti gli altri processori di messaggi in tutte le regioni.
      • Se la trasmissione va a buon fine, ogni processore di messaggi in ricezione aggiorna o rimuove la voce nella cache L1.
      • Se la trasmissione non va a buon fine, il valore della cache invalidato rimane nella cache L1 degli elaboratori di messaggi che non hanno ricevuto la trasmissione. Questi elaboratori di messaggi avranno dati non aggiornati nella cache L1 finché il TTL (time-to-live) della voce non scade o non viene rimosso quando vengono raggiunti i limiti di memoria dell'elaboratore di messaggi.
    2. La trasmissione aggiorna o elimina anche la voce nella cache L2.

Gestione dei limiti della cache

Tramite la configurazione, puoi gestire alcuni aspetti della cache. Lo spazio complessivo disponibile per la cache in memoria è limitato dalle risorse di sistema e non è configurabile. Alla cache si applicano i seguenti vincoli:

  • Limiti della cache: vengono applicati diversi limiti della cache, ad esempio le dimensioni del nome e del valore, il numero totale di cache, il numero di elementi in una cache e la scadenza.
  • Cache in memoria (L1). I limiti di memoria per la cache non sono configurabili. I limiti vengono impostati da Apigee per ogni elaboratore di messaggi che ospita cache per più clienti.

    In un ambiente cloud ospitato, in cui le cache in-memory per tutti gli implementazioni dei clienti sono ospitate su più processori di messaggi condivisi, ogni processore dispone di una soglia percentuale di memoria configurabile da Apigee per garantire che la memorizzazione nella cache non consumi tutta la memoria dell'applicazione. Quando viene superata la soglia per un determinato elaboratore di messaggi, le voci della cache vengono espulse dalla memoria in base all'utilizzo meno recente. Le voci espulse dalla memoria rimangono nella cache L2 fino alla scadenza o all'invalidazione.

  • Cache permanente (L2). Le voci espulse dalla cache in memoria rimangono nella cache permanente in base alle impostazioni di TTL (Time-To-Live) configurabili.

Ottimizzazioni configurabili

La seguente tabella elenca le impostazioni che puoi utilizzare per ottimizzare le prestazioni della cache. Puoi specificare i valori per queste impostazioni quando crei una nuova cache dell'ambiente, come descritto in Creare e modificare una cache dell'ambiente.

Impostazione Descrizione Note
Scadenza Specifica la durata (TTL) delle voci della cache. Nessuno.