Antipattern: armazenar dados com um tamanho superior a 256 KB na cache

Está a ver a documentação do Apigee e do Apigee Hybrid.
Veja a documentação do Apigee Edge.

O Apigee oferece a capacidade de armazenar dados numa cache no momento da execução para persistência e obtenção mais rápida.

  • Os dados são inicialmente armazenados na cache na memória do processador de mensagens, denominada cache L1.
  • A cache L1 está limitada pela quantidade de memória reservada para a mesma como percentagem da memória da JVM.
  • As entradas em cache são posteriormente mantidas na cache L2, que é acessível a todos os processadores de mensagens. Pode encontrar mais detalhes na secção abaixo.
  • A cache de nível 2 não tem um limite máximo para o número de entradas de cache. No entanto, o tamanho máximo da entrada que pode ser colocada em cache está restrito a 256 KB. O tamanho da cache de 256 KB é o tamanho recomendado para um desempenho ideal.

Antipattern

Este padrão de solução de problemas específico aborda as implicações de exceder as restrições de tamanho da cache atuais no Apigee.

Quando os dados > 256 KB são colocados em cache, as consequências são as seguintes:

  • Os pedidos de API executados pela primeira vez em cada um dos processadores de mensagens têm de obter os dados de forma independente da origem original (política ou um servidor de destino), uma vez que as entradas > 256 KB não estão disponíveis na cache L2.
  • O armazenamento de dados maiores (> 256 KB) na cache L1 tende a exercer mais pressão sobre os recursos da plataforma. Resulta no preenchimento mais rápido da memória da cache L1 e, por conseguinte, na menor disponibilidade de espaço para outros dados. Consequentemente, não é possível colocar os dados em cache de forma tão agressiva quanto se desejaria.
  • As entradas em cache dos processadores de mensagens são removidas quando o limite do número de entradas é atingido. Isto faz com que os dados sejam novamente obtidos da origem original nos respetivos processadores de mensagens.

Dois diagramas de fluxo.
  Um para o tamanho<=512 KB que mostra os fluxos entre o proxy da API e os processadores de mensagens, e os fluxos entre os processadores de mensagens e a cache L2 de armazenamento persistente. Uma para o tamanho> 512 KB que mostra os fluxos entre o proxy de API e os processadores de mensagens, bem como os fluxos entre os processadores de mensagens e os dados/respostas não armazenados na cache L2.

Impacto

  • Os dados com um tamanho superior a 256 KB não são armazenados na cache persistente/L2.
  • As chamadas mais frequentes à origem original (uma política ou um servidor de destino) resultam em latências aumentadas para os pedidos da API.

Prática recomendada

  • É preferível armazenar dados de tamanho inferior a 256 KB na cache para obter um desempenho ideal.
  • Se precisar de armazenar dados com mais de 256 KB, considere o seguinte:
    • Usar qualquer base de dados adequada para armazenar grandes quantidades de dados

      OU

    • Comprimir os dados

Leitura complementar