Partage via


Recommandations de résilience pour Azure Cosmos DB for NoSQL

Cet article contient des recommandations pour obtenir une résilience pour Azure Cosmos DB for NoSQL. La plupart des recommandations incluent la prise en charge des requêtes Azure Resource Graph (ARG) afin d’identifier les ressources non conformes.

Matrice d’impact des recommandations de résilience

Chaque recommandation est marquée conformément à la matrice d’impact suivante :

Image Impact Description
Élevé Correctif immédiat nécessaire.
Moyenne Corriger dans les 3 à 6 mois.
Faible Doit être examiné.

Résumé des recommandations de résilience

Catégorie Priorité Recommandation
Disponibilité Configurer au moins deux régions pour la haute disponibilité
Récupération d'urgence Activer le basculement géré par le service pour les comptes multi-régions avec une seule région d’écriture
Évaluer la capacité d’écriture multi-région
Choisir le mode de cohérence approprié reflétant les exigences de durabilité des données
Configurer le mode de sauvegarde continue
Efficacité du système Vérifier que les résultats des requêtes sont entièrement vidés
Maintenir le modèle singleton dans votre client
Résilience des applications Implémenter la logique de nouvelle tentative dans votre client
Surveillance Superviser l’intégrité de Cosmos DB et configurer des alertes

Disponibilité

Configurer au moins deux régions pour la haute disponibilité

Il est essentiel d’activer une région secondaire sur votre Cosmos DB pour obtenir un contrat SLA plus élevé. Cela n’entraîne aucun temps d’arrêt et c’est aussi simple que de sélectionner une épingle sur la carte. Les instances Cosmos DB utilisant une cohérence forte doivent configurer au moins trois régions pour conserver la disponibilité d’écriture en cas de défaillance d’une région.

Avantages potentiels : améliore le contrat SLA et la résilience.

En savoir plus :fiabilité (haute disponibilité) dans Cosmos DB for NoSQL

Resources
| where type =~ 'Microsoft.DocumentDb/databaseAccounts'
| where
     array_length(properties.locations) < 2 or
    (array_length(properties.locations) < 3 and properties.consistencyPolicy.defaultConsistencyLevel == 'Strong')
| project recommendationId='cosmos-1', name, id, tags

Récupération d’urgence

Activer le basculement géré par le service pour les comptes multi-régions avec une seule région d’écriture

Cosmos DB offre une durée de bon fonctionnement et une résilience élevée. Malgré cela, des problèmes peuvent survenir. Avec le basculement géré par le service, si une région est en panne, Cosmos DB bascule automatiquement vers la région disponible suivante, ce qui nécessite aucune action de l’utilisateur.

Resources
| where type =~ 'Microsoft.DocumentDb/databaseAccounts'
| where
    array_length(properties.locations) > 1 and
    tobool(properties.enableAutomaticFailover) == false and
    tobool(properties.enableMultipleWriteLocations) == false
| project recommendationId='cosmos-2', name, id, tags

Évaluer la capacité d’écriture multi-région

La capacité d’écriture multi-région permet de concevoir des applications hautement disponibles dans plusieurs régions, bien qu’elle exige une attention particulière aux exigences de cohérence et à la résolution des conflits. Une configuration incorrecte peut diminuer la disponibilité et provoquer une altération des données en raison de conflits non gérés.

Avantages potentiels : améliore la haute disponibilité.

En savoir plus :

Resources
| where type =~ 'Microsoft.DocumentDb/databaseAccounts'
| where
    array_length(properties.locations) > 1 and
    properties.enableMultipleWriteLocations == false
| project recommendationId='cosmos-3', name, id, tags

Choisir le mode de cohérence approprié reflétant les exigences de durabilité des données

Dans une base de données distribuée mondialement, le niveau de cohérence affecte la durabilité des données pendant les pannes régionales. Comprendre la tolérance à la perte de données pour la planification de la récupération. Utiliser la cohérence de session, sauf si une cohérence plus forte est nécessaire, en acceptant des latences d’écriture plus élevées et un impact potentiel sur les régions d’écriture en cas de pannes en lecture seule.

Avantages potentiels : améliore la durabilité et la récupération des données.

En savoir plus :niveaux de cohérence dans Azure Cosmos DB

Configurer le mode de sauvegarde continue

La sauvegarde de Cosmos DB est toujours activée, offrant une protection contre les erreurs de données. Le mode continu permet une restauration en libre-service à un point antérieur à l’erreur, contrairement au mode périodique, qui nécessite le support Microsoft, ce qui entraîne un temp de restauration plus long.

Avantages potentiels : restauration de données libre-service plus rapide.

En savoir plus :sauvegarde continue avec la fonctionnalité de limite de restauration dans le temps dans Azure Cosmos DB

Resources
| where type =~ 'Microsoft.DocumentDb/databaseAccounts'
| where
    properties.backupPolicy.type == 'Periodic' and
    properties.enableMultipleWriteLocations == false and
    properties.enableAnalyticalStorage == false
| project recommendationId='cosmos-5', name, id, tags

Efficacité du système

Vérifier que les résultats des requêtes sont entièrement vidés

Cosmos DB a une limite de réponse de 4 Mo, ce qui entraîne des résultats paginés pour les requêtes volumineuses ou s’étendant sur plusieurs partitions. Chaque page affiche la disponibilité et fournit un jeton de continuation pour la suivante. Une boucle while dans le code est nécessaire pour parcourir toutes les pages jusqu’à la fin.

Avantages potentiels : optimise l’efficacité de l’extraction de données.

En savoir plus :pagination dans Azure Cosmos DB for NoSQL.

Maintenir le modèle singleton dans votre client

L’utilisation d’une seule instance du client SDK pour chaque compte et application est cruciale, car les connexions sont liées au client. Les environnements Compute ont une limite sur les connexions ouvertes, ce qui affecte la connectivité en cas de dépassement.

Avantages potentiels : optimise les connexions et l’efficacité.

En savoir plus :conception d’applications résilientes avec des Kits de développement logiciel (SDK) Azure Cosmos DB.

Résilience des applications

Implémenter une logique de nouvelle tentative dans votre client

Les Kits de développement logiciel (SDK) Cosmos DB gèrent automatiquement de nombreuses erreurs temporaires par le biais de nouvelles tentatives. Malgré cela, il est essentiel que les applications implémentent des stratégies de nouvelle tentative supplémentaires ciblant des cas spécifiques ne pouvant pas être traiter de manière générique par les Kits de développement logiciel (SDK), ce qui garantit une gestion des erreurs plus robuste.

Avantages potentiels : améliore la résilience de la gestion des erreurs.

En savoir plus :conception d’applications résilientes avec des Kits de développement logiciel (SDK) Azure Cosmos DB.

Surveillance

Superviser l’intégrité de Cosmos DB et configurer des alertes

Nous vous recommandons le monitoring de la disponibilité et de la réactivité des ressources Azure Cosmos DB et la configuration des alertes pour votre charge de travail. Cela vous garantit de rester proactif dans la gestion des événements imprévus.

Avantages potentiels : gestion proactive des problèmes.

En savoir plus :créer des alertes pour Azure Cosmos DB à l’aide d’Azure Monitor