Processi interni della cache

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

Questo argomento descrive il funzionamento della cache al di sotto di criteri quali Criterio popola cache, criterio LookupCache, criterio InvalidateCache e Criterio cache delle risposte.

Cache condivise e in ambiente

Ogni criterio di memorizzazione nella cache che configuri può utilizzare uno di due tipi di cache: una cache condivisa inclusa a cui possono accedere le tue applicazioni e una o più cache con ambito di ambiente create da te.

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

    Puoi lavorare con 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, è sufficiente omettere l'elemento <CacheResource> del criterio.

  • Cache dell'ambiente: se vuoi configurare le proprietà della cache con valori scelti da te, puoi creare una cache con ambito ambiente. Per saperne di più sulla creazione di una cache, consulta Creazione e modifica di una cache dell'ambiente.

    Quando crei una cache dell'ambiente, ne configuri le proprietà predefinite. Un criterio di memorizzazione nella cache può utilizzare la cache dell'ambiente specificando il nome della cache nell'elemento <CacheResource> del criterio.

Informazioni sulla crittografia della cache

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

Livelli di cache in memoria e permanenti

Sia le cache condivise che quelle di ambiente si basano su un sistema a due livelli, composto da un livello di memoria e uno permanente. I criteri interagiscono con entrambi i livelli come un 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) dispone di una propria cache in memoria (implementata da Ehcache) per garantire la risposta più rapida alle richieste.
    • Su ciascun nodo, una determinata percentuale di memoria è riservata all'utilizzo da parte della cache.
    • Quando viene raggiunto il limite di memoria, Apigee Edge rimuove le voci della cache dalla memoria (anche se sono ancora conservate nella cache permanente L2) per garantire che la memoria rimanga disponibile per altri processi.
    • Le voci vengono rimosse in ordine di tempo dall'ultimo accesso, con quelle meno recenti rimosse per prime.
    • Queste cache sono limitate anche dal numero di voci al loro interno.
  • Il livello 2 è una cache persistente (L2) sotto la cache in memoria. Tutti i nodi di elaborazione dei messaggi condividono un datastore della cache (Cassandra) per le voci della cache persistenti.
    • Le voci della cache rimangono in questa posizione anche dopo essere state rimosse dalla cache L1, ad esempio quando vengono raggiunti i limiti in memoria.
    • Poiché la cache persistente è condivisa tra processori dei messaggi (anche in diverse regioni), le voci della cache sono disponibili indipendentemente dal nodo che riceve una richiesta per i dati memorizzati nella cache.
    • Solo le voci di una certa dimensione possono essere memorizzate nella cache e si applicano altri limiti. Vedi Gestione dei limiti della cache.

Potresti anche essere interessato ad Apigee Edge Caching In detail, nella community Apigee.

Modalità di utilizzo della cache da parte dei criteri

Di seguito viene descritto in che modo Apigee Edge gestisce le voci della cache mentre i criteri di memorizzazione nella cache svolgono il proprio lavoro.

  • Quando un criterio scrive una nuova voce nella cache (criterio PopulateCache o ResponseCache):
    1. Edge scrive la voce nella cache L1 in memoria solo sul processore di messaggi che ha gestito la richiesta. Se i limiti di memoria sul processore di messaggi vengono raggiunti prima della scadenza della voce, Edge rimuove la voce dalla cache L1.
    2. Inoltre, Edge scrive la voce nella cache L2.
  • Quando un criterio viene letto dalla cache (criterio LookupCache o ResponseCache):
    1. Edge cerca prima la voce nella cache L1 in memoria del processore di messaggi che gestisce la richiesta.
    2. Se non è presente una voce in memoria corrispondente, Edge cerca la voce nella cache permanente L2.
    3. Se la voce non è nella cache persistente:
      • Criterio LookupCache: nessun valore recuperato dalla cache.
      • Criterio ResponseCache: Edge restituisce la risposta effettiva dalla destinazione al client e archivia la voce nella cache fino a quando non scade o viene invalidata.
  • Quando un criterio aggiorna o non convalida una voce della cache esistente (criterio 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 stessa e su tutti gli altri processori di messaggi in tutte le regioni.
      • Se la trasmissione ha esito positivo, ogni processore di ricezione dei messaggi aggiorna o rimuove la voce nella cache L1.
      • Se la trasmissione non riesce, il valore della cache invalidato rimane nella cache L1 sui processori di messaggi che non hanno ricevuto la trasmissione. Questi processori di messaggi avranno dati inattivi nella cache L1 fino alla scadenza della durata (TTL) della voce o fino alla loro rimozione quando verranno raggiunti i limiti di memoria del processore 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: si applicano vari limiti della cache, ad esempio le dimensioni di nome e valore, il numero totale di cache, il numero di elementi contenuti 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 ciascun processore di messaggi che ospita le cache per più clienti.

    In un ambiente cloud ospitato, in cui le cache in memoria per tutti i deployment dei clienti sono ospitate su più processori di messaggi condivisi, ciascun 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 la soglia viene superata per un determinato processore di messaggi, le voci della cache vengono rimosse dalla memoria secondo le modalità meno utilizzate di recente. Le voci eliminate dalla memoria rimangono nella cache L2 fino alla scadenza o alla validità.

  • Cache permanente (L2). Le voci eliminate dalla cache in memoria rimangono nella cache permanente in base alle impostazioni di durata configurabili.

Ottimizzazioni configurabili

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

Impostazione Descrizione Note
Scadenza Specifica la durata delle voci della cache. Nessuna.