Antipattern: memorizzare nella cache dati di dimensioni superiori a 256 KB

Stai visualizzando la documentazione di Apigee e Apigee hybrid.
Visualizza la documentazione di Apigee Edge.

Apigee offre la possibilità di archiviare i dati in una cache in fase di runtime per la persistenza e il recupero più rapido.

  • I dati vengono inizialmente archiviati nella cache in memoria del processore di messaggi, denominata cache L1.
  • La cache L1 è limitata dalla quantità di memoria riservata come percentuale della memoria JVM.
  • Le voci memorizzate nella cache vengono poi rese persistenti nella cache L2, accessibile a tutti i processori di messaggi. Per ulteriori dettagli, consulta la sezione riportata di seguito.
  • La cache L2 non ha un limite rigido al numero di voci della cache, ma la dimensione massima della voce che può essere memorizzata nella cache è limitata a 256 KB. La dimensione della cache di 256 kB è la dimensione consigliata per prestazioni ottimali.

Antipattern

Questo antipattern specifico parla delle implicazioni del superamento delle attuali limitazioni delle dimensioni della cache in Apigee.

Quando vengono memorizzati nella cache dati > 256 KB, le conseguenze sono le seguenti:

  • Le richieste API eseguite per la prima volta su ciascuno dei processori di messaggi devono recuperare i dati in modo indipendente dall'origine originale (norma o server di destinazione), poiché le voci > 256 KB non sono disponibili nella cache L2.
  • L'archiviazione di dati più grandi (> 256 KB) nella cache L1 tende a sovraccaricare le risorse della piattaforma. Di conseguenza, la memoria cache L1 si riempie più rapidamente e quindi lo spazio disponibile per altri dati è inferiore. Di conseguenza, non sarà possibile memorizzare nella cache i dati in modo aggressivo come si vorrebbe.
  • Le voci memorizzate nella cache dei Message Processor verranno rimosse quando viene raggiunto il limite del numero di voci. In questo modo, i dati vengono recuperati di nuovo dall'origine originale nei rispettivi Message Processor.

Due diagrammi di flusso.
  Uno per dimensioni<=512 KB che mostra i flussi tra il proxy API e i processori di messaggi
  e i flussi tra i processori di messaggi e la cache L2 di archiviazione permanente. Uno per dimensioni> 512 KB che mostra
  i flussi tra il proxy API e i processori di messaggi e i flussi tra i processori di messaggi e i dati/le risposte
  non archiviati nella cache L2.

Impatto

  • I dati di dimensioni superiori a 256 KB non verranno archiviati nella cache L2/persistente.
  • Chiamate più frequenti all'origine originale (una policy o un server di destinazione) comportano un aumento della latenza per le richieste API.

Best practice

  • È preferibile archiviare nella cache i dati di dimensioni inferiori a 256 KB per ottenere prestazioni ottimali.
  • Se è necessario archiviare dati > 256 KB, valuta la possibilità di:
    • Utilizzo di un database appropriato per l'archiviazione di grandi quantità di dati

      OR

    • Compressione dei dati

Per approfondire