Condividi tramite


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

Categoria Priorità Elemento consigliato
Disponibilità Configurare almeno due aree per la disponibilità elevata
Ripristino di emergenza Abilitare il failover gestito dal servizio per gli account in più aree con una singola area di scrittura
Valutare la funzionalità di scrittura in più aree
Scegliere la modalità di coerenza appropriata che riflette i requisiti di durabilità dei dati
Configurare la modalità di backup continuo
Efficienza del sistema Verificare che i risultati delle query siano completamente svuotati
Mantenere il modello singleton nel client
Resilienza delle applicazioni Implementare la logica di ripetizione dei tentativi nel client
Monitoraggio Monitorare l'integrità di Cosmos DB e configurare gli avvisi

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:

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