Partager via


Implémenter le cache de niveau 2

Le générateur d’API de données a pris en charge le cache de niveau 1 (L1) en mémoire et les en-têtes de requête HTTP associés au cache tels que no-store, no-cacheet only-if-cached pour influencer le comportement du cache.

Le cache de niveau 2 (L2) étend la mise en cache au-delà du processus local en ajoutant une couche de cache distribuée. Avec L2, les résultats mis en cache peuvent être réutilisés sur plusieurs instances DAB et peuvent survivre à des redémarrages de conteneurs individuels, ce qui rend les déploiements sans état moins sans état de toutes les manières appropriées.

Avantages du cache de niveau 2

Utilisez le cache de niveau 2 lorsque vous souhaitez :

  • Partager des résultats mis en cache sur des instances DAB avec montée en charge
  • Réduire les allers-retours de base de données pour les lectures répétées
  • Conserver les conteneurs sans état au chaud après le recyclage ou le redéploiement
  • Améliorer les performances des charges de travail lourdes en lecture
  • Participation au cache d’espace de noms avec des partitions

Configurer les paramètres du cache du runtime

Le cache de niveau 2 est configuré globalement sous runtime.cache. Le bloc de cache du runtime active la mise en cache, définit la durée de vie par défaut (TTL) et configure le fournisseur de cache distribué.

{
  "runtime": {
    "cache": {
      "enabled": true,
      "ttl-seconds": 30,
      "level-2": {
        "enabled": true,
        "provider": "redis",
        "connection-string": "localhost:6379",
        "partition": "prod-api"
      }
    }
  }
}

Propriétés du runtime

Propriété Description
enabled Active la prise en charge du cache globalement.
ttl-seconds Définit le délai de vie du cache par défaut en secondes.
level-2.enabled Active le niveau de cache distribué.
level-2.provider Sélectionne le fournisseur de cache distribué. Actuellement redis , il est pris en charge.
level-2.connection-string Chaîne de connexion pour l’instance Redis.
level-2.partition Espace de noms facultatif pour les clés Redis et le canal backplane. Seuls les conteneurs utilisant la même partition partagent le même espace de cache distribué.

Configurer le comportement du cache spécifique à l’entité

Les entités peuvent remplacer le comportement global du cache. Utilisez le bloc d’entité cache pour activer la mise en cache, définir une durée de vie personnalisée et choisir le niveau de cache.

{
  "entities": {
    "Products": {
      "source": "dbo.Products",
      "cache": { "enabled": true, "ttl-seconds": 120, "level": "L1L2" }
    },
    "Orders": {
      "source": "dbo.Orders",
      "cache": { "enabled": true, "level": "L1" }
    }
  }
}

La propriété cache.level

Permet cache.level de contrôler les niveaux de cache utilisés par une entité.

Valeur Description
L1 Cache en mémoire uniquement. Rapide et local dans le processus DAB actuel.
L1L2 Mémoire et cache distribué. Ce niveau est la valeur par défaut pour les entités mises en cache.

Si L2 elle n’est pas activée globalement, une entité configurée avec L1L2 se comporte comme L1.

Comment fonctionne L1L2

Conseil / Astuce

TL; DRL1L2 = Requête → L1 → L2 → base de données → L2 → L1 → Response

Par défaut, une entité avec mise en cache activée utilise le niveau L1L2.

  • L1 est le cache en mémoire par processus.
  • L2 est la couche de cache distribuée, actuellement Redis, ainsi qu’un backplane pour la cohérence entre instances.

Avec L1L2, une recherche de cache vérifie L1d’abord . En cas d’absence L1 , il vérifie L2 si la mise en cache de niveau 2 est activée globalement et configurée. Si l’entrée n’est pas trouvée dans l’une ou l’autre couche, DAB exécute la requête de base de données. Le résultat est ensuite stocké dans les deux L1 et L2.

Cela signifie que :

  • Les requêtes futures sur la même instance sont traitées à partir de local L1
  • Les demandes sur d’autres instances peuvent lire L2 et promouvoir l’entrée dans leur propre L1
  • Si un conteneur redémarre, une L1 erreur suivie d’un L2 accès peut toujours éviter un aller-retour de base de données

Cette combinaison vous offre un cache distribué chaud entre les instances mises à l’échelle ou recyclées.

Prise en charge de Redis

Redis est le fournisseur actuel pour le cache de niveau 2. Il convient parfaitement à ce scénario, car il prend en charge les éléments suivants :

  • Accès partagé entre plusieurs instances DAB
  • Expiration de clé pour la mise en cache basée sur la durée de vie
  • Lectures et écritures rapides pour les charges de travail à débit élevé
  • Coordination du plan de sauvegarde entre les instances

Espaces de cache partitionnés

Utilisez le paramètre facultatif partition pour isoler l’activité du cache distribué. DAB utilise la valeur de partition pour les clés Redis d’espace de noms et le canal backplane. Seuls les conteneurs partageant la même partition participent au même espace de cache distribué.

Ce paramètre est utile lorsque vous souhaitez :

  • Séparer le trafic de production et de non-production
  • Isoler les locataires ou les environnements
  • Empêcher les services non liés de partager des entrées mises en cache

Voir également