Raccomandazioni sulla resilienza per Azure Cosmos DB per NoSQL
Questo articolo contiene raccomandazioni per ottenere la resilienza per Azure Cosmos DB per NoSQL. Molte delle raccomandazioni contengono il supporto di query di Azure Resource Graph (ARG) per identificare le risorse non conformi.
Matrice di impatto delle raccomandazioni sulla resilienza
Ogni raccomandazione è contrassegnata in base alla matrice di impatto seguente:
Immagine | Impatto | Descrizione |
---|---|---|
Fortemente | Correzione immediata necessaria. | |
Medio | Correzione entro 3-6 mesi. | |
Basso | Deve essere esaminato. |
Riepilogo delle raccomandazioni sulla resilienza
Disponibilità
Configurare almeno due aree per la disponibilità elevata
È fondamentale abilitare un'area secondaria in Cosmos DB per ottenere un contratto di servizio superiore. In questo modo non si verificano tempi di inattività ed è facile come selezionare un segnaposto sulla mappa. Le istanze di Cosmos DB che usano la coerenza assoluta devono configurare almeno tre aree per mantenere la disponibilità di scrittura in caso di errore di un'area.
Potenziali vantaggi: migliora il contratto di servizio e la resilienza.
Altre informazioni:Affidabilità (disponibilità elevata) in Cosmos DB per No SQL
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
Ripristino di emergenza
Abilitare il failover gestito dal servizio per gli account in più aree con una singola area di scrittura
Cosmos DB vanta tempi di attività e resilienza elevati. Anche così, possono verificarsi problemi. Con il failover gestito dal servizio, se un'area è inattiva, Cosmos DB passa automaticamente all'area disponibile successiva, senza alcuna azione da parte dell'utente.
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
Valutare la funzionalità di scrittura in più aree
La funzionalità di scrittura in più aree consente di progettare applicazioni a disponibilità elevata in più aree, anche se richiede attenzione ai requisiti di coerenza e alla risoluzione dei conflitti. L'installazione non corretta può ridurre la disponibilità e causare il danneggiamento dei dati a causa di conflitti non gestiti.
Vantaggi potenziali: migliora la disponibilità elevata.
Altre informazioni:
- Distribuire i dati a livello globale con Azure Cosmos DB
- Tipi di conflitto e criteri di risoluzione durante l'uso di più aree di scrittura
Resources
| where type =~ 'Microsoft.DocumentDb/databaseAccounts'
| where
array_length(properties.locations) > 1 and
properties.enableMultipleWriteLocations == false
| project recommendationId='cosmos-3', name, id, tags
Scegliere la modalità di coerenza appropriata che riflette i requisiti di durabilità dei dati
In un database distribuito a livello globale il livello di coerenza influisce sulla durabilità dei dati durante le interruzioni a livello di area. Comprendere la tolleranza alla perdita di dati per la pianificazione del ripristino. Usare la coerenza della sessione, a meno che non sia necessaria una maggiore necessità, accettando latenze di scrittura più elevate e potenziale impatto sull'area di scrittura da interruzioni di sola lettura.
Vantaggi potenziali: migliora la durabilità e il ripristino dei dati.
Altre informazioni: Livelli di coerenza in Azure Cosmos DB
Configurare la modalità di backup continuo
Il backup di Cosmos DB è sempre attivo, offrendo protezione dagli errori di dati. La modalità continua consente il ripristino self-service a un punto pre-mishap, a differenza della modalità periodica, che richiede di contattare il supporto Tecnico Microsoft, causando tempi di ripristino più lunghi.
Vantaggi potenziali: ripristino dei dati self-service più rapido.
Altre informazioni:Backup continuo con funzionalità di ripristino temporizzato in 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
Efficienza del sistema
Verificare che i risultati delle query siano completamente svuotati
Cosmos DB ha un limite di risposta di 4 MB, causando risultati impaginati per query di grandi dimensioni o di partizione. Ogni pagina mostra la disponibilità e fornisce un token di continuazione per il successivo. Un ciclo while nel codice è necessario per attraversare tutte le pagine fino al completamento.
Vantaggi potenziali: ottimizza l'efficienza del recupero dei dati.
Altre informazioni:Paginazione in Azure Cosmos DB per No SQL.
Mantenere il modello singleton nel client
L'uso di una singola istanza del client SDK per ogni account e applicazione è fondamentale perché le connessioni sono collegate al client. Gli ambienti di calcolo hanno un limite per le connessioni aperte, che influiscono sulla connettività quando viene superato.
Vantaggi potenziali: ottimizza le connessioni e l'efficienza.
Altre informazioni: Progettazione di applicazioni resilienti con Gli SDK di Azure Cosmos DB.
Resilienza delle applicazioni
Implementare la logica di ripetizione dei tentativi nel client
Gli SDK di Cosmos DB gestiscono automaticamente molti errori temporanei tramite tentativi. Nonostante ciò, è fondamentale per le applicazioni implementare criteri di ripetizione aggiuntivi destinati a casi specifici che gli SDK non possono affrontare in modo generico, garantendo una gestione degli errori più affidabile.
Vantaggi potenziali: migliora la resilienza della gestione degli errori.
Altre informazioni: Progettazione di applicazioni resilienti con Gli SDK di Azure Cosmos DB.
Monitoraggio
Monitorare l'integrità di Cosmos DB e configurare gli avvisi
Il monitoraggio della disponibilità e della velocità di risposta delle risorse di Azure Cosmos DB e la configurazione degli avvisi per il carico di lavoro è una procedura consigliata. In questo modo è possibile rimanere proattivi nella gestione degli eventi imprevisti.
Potenziali vantaggi: gestione proattiva dei problemi.
Altre informazioni: Creare avvisi per Azure Cosmos DB con Monitoraggio di Azure
Commenti e suggerimenti
https://aka.ms/ContentUserFeedback.
Presto disponibile: Nel corso del 2024 verranno gradualmente disattivati i problemi di GitHub come meccanismo di feedback per il contenuto e ciò verrà sostituito con un nuovo sistema di feedback. Per altre informazioni, vedereInvia e visualizza il feedback per