Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
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.
-
L1est le cache en mémoire par processus. -
L2est 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
L2et promouvoir l’entrée dans leur propreL1 - Si un conteneur redémarre, une
L1erreur suivie d’unL2accè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