Processi interni della cache

Stai visualizzando la documentazione di Apigee Edge.
Consulta la documentazione di Apigee X.
info

Questo argomento descrive il funzionamento della cache sottostante a policy come la policy Populate Cache, policy LookupCache, policy InvalidateCache, e la policy Response Cache.

Cache condivise e dell'ambiente

Ogni policy di memorizzazione nella cache configurata può utilizzare uno dei due tipi di cache: una cache condivisa inclusa a cui le applicazioni hanno accesso e una o più cache con ambito ambiente create da te.

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

    Puoi utilizzare la cache condivisa solo tramite le policy di memorizzazione nella cache, non tramite l'API di gestione Per fare in modo che una policy di memorizzazione nella cache utilizzi la cache condivisa, ometti l'elemento <CacheResource> della policy.

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

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

Informazioni sulla crittografia della cache

Edge per il cloud pubblico: la cache viene 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 persistente

Sia la cache condivisa sia quella dell'ambiente sono basate su un sistema a due livelli composto da un livello in memoria e un livello persistente. Le policy 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 la propria cache in memoria (implementata da Ehcache) per la risposta più rapida alle richieste.
    • Su ogni 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 vengono comunque mantenute nella cache persistente L2) per garantire che la memoria rimanga disponibile per altri processi.
    • Le voci vengono rimosse in base all'ordine di tempo dall'ultimo accesso, con le voci meno recenti rimosse per prime.
    • Queste cache sono limitate anche dal numero di voci nella cache.
  • 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 rendere persistenti le 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 le voci di una determinata dimensione e si applicano altri limiti della cache. Consulta Gestire i limiti della cache.

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

Come le policy utilizzano la cache

Di seguito viene descritto come Apigee Edge gestisce le voci della cache mentre le policy di memorizzazione nella cache svolgono il loro lavoro.

  • Quando una policy scrive una nuova voce nella cache (policy 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. Edge scrive la voce anche nella cache L2.
  • Quando una policy legge dalla cache (policy 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 esiste una voce in memoria corrispondente, Edge cerca la voce nella cache persistente L2.
    3. Se la voce non è nella cache persistente:
      • Policy LookupCache: non viene recuperato alcun valore dalla cache.
      • Policy ResponseCache: Edge restituisce la risposta effettiva dalla destinazione al client e memorizza la voce nella cache fino alla scadenza o all'annullamento della convalida.
  • Quando una policy aggiorna o annulla la convalida di una voce della cache esistente (policy 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 ha esito positivo, ogni processore di messaggi ricevente 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 sui processori di messaggi che non hanno ricevuto la trasmissione. Questi processori di messaggi avranno dati non aggiornati nella cache L1 fino alla scadenza della durata (TTL) della voce o alla rimozione quando vengono raggiunti i limiti di memoria del processore di messaggi.
    2. La trasmissione aggiorna o elimina anche la voce nella cache L2.

Gestire i limiti della cache

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

  • Limiti della cache: Si applicano vari limiti della cache, come la dimensione 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 sono impostati da Apigee per ogni 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, ogni processore presenta una soglia di 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 in base al criterio di utilizzo meno recente. Le voci rimosse dalla memoria rimangono nella cache L2 fino alla scadenza o all'annullamento della convalida.

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

Ottimizzazioni configurabili

La tabella seguente 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 delle voci della cache. Nessuno.