Composants internes du cache

Vous consultez la documentation d'Apigee Edge.
Consultez la documentation Apigee X.
en savoir plus

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 suivants: un cache partagé inclus auquel vos applications ont accès et un ou plusieurs caches à l'échelle de l'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é, il suffit d'omettre l'élément <CacheResource> de la règle.

  • Cache d'environnement:lorsque vous souhaitez configurer des propriétés de cache avec les 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. Pour qu'une règle de mise en cache utilise le cache de l'environnement, spécifiez 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 est chiffré uniquement dans les organisations conformes à la norme PCI et à la loi 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 les 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é au cache.
    • Lorsque la limite de mémoire est atteinte, Apigee Edge supprime les entrées de cache de la mémoire (bien qu'elles soient toujours conservées dans le cache persistant L2) afin de s'assurer que la mémoire reste disponible pour les autres processus.
    • Les entrées sont supprimées dans l'ordre du temps écoulé depuis le dernier accès. Les entrées les plus anciennes sont 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.

La mise en cache Apigee Edge en détail peut également vous intéresser, dans la communauté Apigee.

Comment les règles utilisent-elles 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 stratégie écrit une nouvelle entrée dans le cache (stratégie 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 stratégie effectue une lecture à partir du cache (stratégie 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 ne se trouve 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 stratégie met à jour ou invalide une entrée de cache existante (stratégie InvalidateCache, PopulateCache ou ResponseCache) :
    1. Le processeur de messages qui reçoit la requête envoie une annonce pour mettre à jour ou supprimer l'entrée dans le cache L1 sur lui-même et sur tous les autres processeurs de messages de 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 auront des données obsolètes dans le cache L1 jusqu'à ce que la valeur TTL (Time To Live) de l'entrée expire ou soit supprimée lorsque les limites de mémoire du processeur de messages sont atteintes.
    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 Remarques
Expiration Spécifie la durée de vie des entrées de cache. Aucune