Processi interni della cache

Questa pagina si applica ad Apigee e Apigee hybrid.

Visualizza la documentazione di Apigee Edge.

Questo argomento descrive il funzionamento della cache al di sotto di criteri quali criterio PopulateCache, criterio LookupCache, criterio InvalidateCache e Criterio ResponseCache.

Informazioni sulle cache

Quando viene eseguito un criterio di memorizzazione nella cache, viene creata una cache L1 di breve durata. Dopo un secondo, se un elemento memorizzato nella cache non viene accessibile, viene reso persistente in un database in cui è disponibile per tutti i processori di messaggi di cui è stato eseguito il deployment in un ambiente fino alla scadenza della cache. Puoi configurare la data e l'ora di scadenza direttamente nel criterio della cache.

Livelli di cache in memoria e permanente

Sia la cache condivisa e quella dell'ambiente sono basate su un sistema a due livelli composto da un livello in memoria e uno permanente, come mostrato nella figura che segue. I criteri interagiscono con entrambi i livelli come un framework combinato. Apigee gestisce la relazione tra i livelli.

I criteri di memorizzazione nella cache interagiscono con i processori di messaggi di livello 1 che interagiscono con l'archiviazione permanente di livello 2
  • Il livello 1 è una cache in memoria (L1) per l'accesso rapido. Ogni nodo di elaborazione dei messaggi (MP) dispone di una propria cache in memoria per garantire la risposta più rapida alle richieste.
    • L1 è una cache in memoria di breve durata (1 secondo).
    • Quando viene raggiunto il limite di memoria, Apigee rimuove le voci della cache dalla memoria (anche se le voci rimangono nella cache permanente L2) per garantire che la memoria rimanga disponibile per altri processi.
    • L1 dispone di una cache di breve durata di un secondo per eseguire ricerche più veloci per richieste in parallelo con la stessa chiave 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 le voci della cache permanenti.
    • 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 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.
    • Solo le voci di una certa dimensione possono essere memorizzate nella cache e si applicano altri limiti. Vedi Gestione dei limiti della cache.
    • Il contenuto della cache in L2 è criptato con l'algoritmo AES-256. I dati vengono decriptati prima di essere utilizzati dal runtime e criptati prima di essere scritti in L2. In questo modo il processo di crittografia non è visibile agli utenti.

Modalità di utilizzo della cache da parte dei criteri

Di seguito viene descritto in che modo Apigee 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. Apigee 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 dei messaggi vengono raggiunti prima della scadenza della voce, Apigee rimuove la voce dalla cache L1.
    2. Apigee scrive anche la voce nella cache L2.
  • Quando un criterio viene letto dalla cache (criterio LookupCache o ResponseCache):
    1. Apigee 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, Apigee cerca la voce nella cache permanente L2.
    3. Se la voce non è nella cache persistente:
      • Criterio LookupCache: non viene recuperato alcun valore dalla cache.
      • Criterio ResponseCache: Apigee restituisce la risposta effettiva dal target al client e archivia la voce nella cache fino a quando non scade o non viene invalidata.
  • Quando un criterio aggiorna o non convalida una voce della cache esistente (criterio InvalidateCache, Criterio PopulateCache o Criterio ResponseCache):
    1. Il processore di messaggi che riceve la richiesta elimina la voce dalla cache L1 in memoria di un secondo e dalla cache L2.
    2. Dopo un aggiornamento o un'annullamento della convalida, è possibile che gli altri processori dei messaggi mantengano ancora la cache L1 in memoria.
    3. Poiché L1 è configurato per scadere dopo un secondo, non è necessario alcun evento di eliminazione/aggiornamento per rimuovere la voce da L1.

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 di cache, tra cui dimensioni del nome e del valore, numero totale di cache, numero di elementi in una cache e scadenza.
  • Cache in memoria (L1). I limiti di memoria per la cache non sono configurabili. I limiti vengono impostati da Apigee per ogni processore di messaggi che ospita 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 offre 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 solo di recente. Le voci rimosse dalla memoria rimangono nella cache L2 fino a quando non scadono o non vengono annullate.

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

Ottimizzazioni configurabili

Nella tabella seguente sono elencate le impostazioni che puoi utilizzare per ottimizzare le prestazioni della cache.

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