Composants internes du cache

Vous consultez la documentation d'Apigee Edge.
Accédez à la documentation sur Apigee X.
info

Cette rubrique décrit le fonctionnement du cache dans des règles telles que la règle d'insertion du cache, la règle LookupCache, la règle InvalidateCache et la règle de réponse du cache.

Caches partagés et d'environnement

Chaque règle de mise en cache que vous configurez peut utiliser l'un des deux types de cache: un cache partagé inclus auquel vos applications ont accès et un ou plusieurs caches de portée d'environnement que vous créez.

  • Cache partagé:par défaut, vos proxys ont accès à un cache partagé dans chaque environnement. Le cache partagé fonctionne bien pour les cas d'utilisation de base.

    Vous ne pouvez utiliser le cache partagé qu'à l'aide de règles de mise en cache, et non de l'API de gestion. Pour qu'une règle de mise en cache utilise le cache partagé, omettez simplement l'élément <CacheResource> de la règle.

  • Cache d'environnement:lorsque vous souhaitez configurer des propriétés de cache avec des valeurs de votre choix, vous pouvez créer un cache de portée environnement. Pour en savoir plus sur la création d'un cache, consultez la section Créer et modifier un cache d'environnement.

    Lorsque vous créez un cache d'environnement, vous configurez ses propriétés par défaut. Vous pouvez demander à une règle de mise en cache d'utiliser le cache de l'environnement en spécifiant le nom du cache dans l'élément <CacheResource> de la règle.

À propos du chiffrement du cache

Edge pour le cloud public:le cache n'est chiffré que dans les organisations compatibles PCI et HIPAA. Le chiffrement de ces organisations est configuré lors de la gestion de leurs comptes.

Niveaux de cache en mémoire et de cache persistant

Les caches partagés d'environnement sont basés sur un système à deux niveaux constitué d'un niveau en mémoire et d'un niveau persistant. Les règles interagissent avec ces deux niveaux sous forme de framework combiné. Edge gère la relation entre ces niveaux.

  • Le niveau 1 est un cache en mémoire (L1) permettant un accès rapide. Chaque nœud de traitement de messages dispose de son propre cache en mémoire (implémenté depuis Ehcache) pour une réponse plus rapide aux requêtes.
    • Sur chaque nœud, un certain pourcentage de mémoire est réservé à l'utilisation du cache.
    • Lorsque la limite de mémoire est atteinte, Apigee Edge supprime les entrées de cache de la mémoire (bien qu'elles restent conservées dans le cache persistant L2) pour garantir que la mémoire reste disponible pour d'autres processus.
    • Les entrées sont supprimées dans l'ordre chronologique depuis le dernier accès, les plus anciennes étant supprimées en premier.
    • Ces caches sont également limités par le nombre d'entrées qu'ils contiennent.
  • Le niveau 2 est un cache persistant (L2) sous le cache en mémoire. Tous les nœuds de traitement de messages partagent un datastore de mise en cache (Cassandra) pour conserver des entrées de cache.
    • Les entrées de cache sont conservées ici même après leur suppression du cache L1, par exemple lorsque les limites en mémoire sont atteintes.
    • Comme le cache persistant est partagé entre les processeurs de messages (même dans différentes régions), les entrées de cache sont disponibles quel que soit le nœud recevant une requête pour les données mises en cache.
    • Seules les entrées d'une certaine taille peuvent être mises en cache, et d'autres limites s'appliquent. Consultez la section Gérer les limites de cache.

Vous pouvez également consulter Apigee Edge Caching In Detail (Cacher Apigee Edge en détail) sur la communauté Apigee.

Comment les règles utilisent le cache

La section suivante explique comment Apigee Edge gère les entrées de cache pendant que vos règles de mise en cache fonctionnent.

  • Lorsqu'une règle écrit une nouvelle entrée dans le cache (règle PopulateCache ou ResponseCache) :
    1. Edge écrit l'entrée dans le cache L1 en mémoire uniquement sur le processeur de messages qui a traité la requête. Si les limites de mémoire du processeur de messages sont atteintes avant l'expiration de l'entrée, Edge supprime l'entrée du cache L1.
    2. Edge écrit également l'entrée dans le cache L2.
  • Lorsqu'une règle lit à partir du cache (règle LookupCache ou ResponseCache) :
    1. Edge recherche d'abord l'entrée dans le cache L1 en mémoire du processeur de messages qui traite la requête.
    2. S'il n'y a pas d'entrée en mémoire correspondante, Edge recherche l'entrée dans le cache persistant L2.
    3. Si l'entrée n'est pas dans le cache persistant :
      • Règle LookupCache : aucune valeur n'est extraite du cache.
      • Règle ResponseCache : Edge renvoie la réponse réelle de la cible au client et stocke l'entrée dans le cache jusqu'à son expiration ou son invalidation.
  • Lorsqu'une règle met à jour ou invalide une entrée de cache existante (règle InvalidateCache, PopulateCache, ou ResponseCache) :
    1. Le processeur de messages qui reçoit la requête envoie une diffusion pour mettre à jour ou supprimer l'entrée dans le cache L1 sur lui-même et tous les autres processeurs de messages dans toutes les régions.
      • Si la diffusion réussit, chaque processeur de messages met à jour ou supprime l'entrée dans le cache L1.
      • Si la diffusion échoue, la valeur de cache invalidée reste dans le cache L1 sur les processeurs de messages qui n'ont pas reçu la diffusion. Ces processeurs de messages contiendront des données obsolètes dans le cache L1 jusqu'à ce que la durée de vie (TTL) de l'entrée expire ou soit supprimée lorsque la limite de mémoire du processeur de messages est atteinte.
    2. La diffusion met également à jour ou supprime l'entrée dans le cache L2.

Gérer les limites de cache

Vous pouvez gérer certains aspects du cache via des configurations. L'espace global disponible pour la mise en cache en mémoire est limité par les ressources système et n'est pas configurable. Les contraintes suivantes s'appliquent au cache :

  • Limites de cache : des limites de cache diverses s'appliquent, telles que la taille du nom et des valeurs, le nombre total de caches, le nombre d'éléments dans un cache et l'expiration.
  • Cache en mémoire (L1) : les limites de mémoire de votre cache ne sont pas configurables. Les limites sont définies par Apigee pour chaque processeur de messages qui héberge des caches pour plusieurs clients.

    Dans un environnement cloud hébergé, dans lequel les caches en mémoire de tous les déploiements du client sont hébergés sur plusieurs processeurs de messages partagés, chaque processeur dispose d'un seuil de pourcentage de mémoire configurable sur Apigee pour garantir que la mise en cache ne consomme pas toute la mémoire de l'application. Lorsque le seuil est dépassé pour un processeur de messages donné, les entrées de cache sont évincées de la mémoire, en commençant par celles les moins récemment utilisées. Les entrées supprimées de la mémoire restent dans le cache L2 jusqu'à leur expiration ou leur invalidation.

  • Cache persistant (L2) : les entrées supprimées du cache en mémoire restent dans le cache persistant en fonction des paramètres de durée de vie configurables.

Optimisations configurables

Le tableau suivant répertorie les paramètres que vous pouvez utiliser pour optimiser les performances du cache.  Vous pouvez spécifier des valeurs pour ces paramètres lorsque vous créez un cache d'environnement, comme décrit dans la page Créer et modifier un cache d'environnement.

Paramètre Description Notes
Expiration Spécifie la durée de vie des entrées de cache. Aucune