Disponibilità elevata con Azure Cosmos DBHigh availability with Azure Cosmos DB

Azure Cosmos DB replica in modo trasparente i dati in tutte le aree di Azure associate all'account Cosmos in uso.Azure Cosmos DB transparently replicates your data across all the Azure regions associated with your Cosmos account. Cosmos DB usa più livelli di ridondanza per i dati, come mostrato nell'immagine seguente:Cosmos DB employs multiple layers of redundancy for your data as shown in the following image:

Partizionamento fisico

  • I dati all'interno dei contenitori Cosmos partizionati orizzontalmente.The data within Cosmos containers is horizontally partitioned.

  • All'interno di ogni area, ogni partizione è protetta da un set di repliche con tutte le scritture replicate e sottoposte a commit permanente dalla maggior parte delle repliche.Within each region, every partition is protected by a replica-set with all writes replicated and durably committed by a majority of replicas. Le repliche sono distribuite in 10-20 domini di errore.Replicas are distributed across as many as 10-20 fault domains.

  • Ogni partizione in tutte le aree viene replicata.Each partition across all the regions is replicated. Ogni area contiene tutte le partizioni di dati di un contenitore Cosmos e può accettare operazioni di scrittura e rendere disponibili le letture.Each region contains all the data partitions of a Cosmos container and can accept writes and serve reads.

Se l'account Cosmos viene distribuito tra N aree di Azure, sia almeno N x 4 copie di tutti i dati.If your Cosmos account is distributed across N Azure regions, there will be at least N x 4 copies of all your data. Oltre a fornire l'accesso ai dati a bassa latenza e scalabilità della velocità effettiva di lettura/scrittura tra le aree associate all'account Cosmos, avere più aree (superiore N) migliora ulteriormente la disponibilità.In addition to providing low latency data access and scaling write/read throughput across the regions associated with your Cosmos account, having more regions (higher N) further improves availability.

Contratti di servizio per la disponibilitàSLAs for availability

Essendo un database distribuito a livello globale, Cosmos DB offre contratti di servizio completi che includono velocità effettiva, latenza al 99° percentile, coerenza e disponibilità elevata.As a globally distributed database, Cosmos DB provides comprehensive SLAs that encompass throughput, latency at the 99th percentile, consistency, and high availability. Nella tabella seguente vengono descritte le garanzie relative alla disponibilità elevata fornita da Cosmos DB per gli account in aree singole e in più aree.The table below shows the guarantees for high availability provided by Cosmos DB for single and multi-region accounts. Per la disponibilità elevata, configurare sempre gli account Cosmos per più aree di scrittura.For high availability, always configure your Cosmos accounts to have multiple write regions.

Tipo di operazioneOperation type Area singolaSingle region Più aree (scrittura in area singola)Multi-region (single region writes) Più aree (scrittura in più aree)Multi-region (multi-region writes)
ScrittureWrites 99,9999.99 99,9999.99 99,99999.999
LettureReads 99,9999.99 99,99999.999 99,99999.999

Nota

In pratica, la disponibilità effettiva di scrittura per il decadimento ristretto, sessione, prefisso coerente e modelli di coerenza finale è notevolmente superiore i contratti di servizio pubblicate.In practice, the actual write availability for bounded staleness, session, consistent prefix and eventual consistency models is significantly higher than the published SLAs. La disponibilità effettiva di lettura per tutti i livelli di coerenza è notevolmente superiore a quella prevista dai contratti di servizio pubblicati.The actual read availability for all consistency levels is significantly higher than the published SLAs.

Disponibilità elevata con Cosmos DB in caso di interruzioni a livello di areaHigh availability with Cosmos DB in the event of regional outages

Interruzioni a livello di area sono abbastanza comuni e Azure Cosmos DB garantisce che il database sia sempre a disponibilità elevata.Regional outages aren't uncommon, and Azure Cosmos DB makes sure your database is always highly available. I dettagli seguenti acquisire il comportamento di Cosmos DB durante un'interruzione, a seconda della configurazione di account Cosmos:The following details capture Cosmos DB behavior during an outage, depending on your Cosmos account configuration:

  • Con Cosmos DB, prima della conferma di un'operazione di scrittura al client, un quorum di repliche esegue il commit permanente dei dati all'interno dell'area accettando le operazioni di scrittura.With Cosmos DB, before a write operation is acknowledged to the client, the data is durably committed by a quorum of replicas within the region that accepts the write operations.

  • Gli account in più aree configurati con aree a scrittura multipla rimarranno a disponibilità elevata sia per le operazioni di scrittura che per le operazioni di lettura.Multi-region accounts configured with multiple-write regions will be highly available for both writes and reads. I failover a livello di area vengono visualizzati immediatamente e non richiedono modifiche dall'applicazione.Regional failovers are instantaneous and don't require any changes from the application.

  • Account in più aree con un'area singola e scrittura (interruzione di area di scrittura): durante un'interruzione del servizio in un'area di scrittura, questi account mantengono la disponibilità elevata per le letture.Multi-region accounts with a single-write region (write region outage): During a write region outage, these accounts will remain highly available for reads. Per le scritture è tuttavia necessario "abilitare il failover automatico" il Cosmos account per eseguire il failover l'area interessata da un'altra area.However, for writes you must “enable automatic failover” on your Cosmos account to failover the impacted region to another region. Il failover verrà eseguito nell'ordine di priorità dell'area specificato.The failover will occur in the order of region priority you’ve specified. Quando l'area interessata è in modalità online, i dati non replicati presenti nell'area di scrittura interessata durante l'interruzione del servizio vengono resi disponibili tramite il conflitti feed.When the impacted region is back online, the unreplicated data present in the impacted write region during the outage is made available through the conflicts feed. Le applicazioni possono leggere i conflitti del feed, risolvere i conflitti in base alla logica specifica dell'applicazione e scrivono nuovamente i dati aggiornati nel contenitore Cosmos come appropriato.Applications can read the conflicts feed, resolve the conflicts based on the application-specific logic, and write the updated data back to the Cosmos container as appropriate. Una volta che viene ripristinata l'area di scrittura interessata in precedenza, diventa automaticamente disponibile come area di lettura.Once the previously impacted write region recovers, it becomes automatically available as a read region. È possibile richiamare un failover manuale e configurare l'area interessata come area di scrittura.You can invoke a manual failover and configure the impacted region as the write region. Anche in questo caso è possibile eseguire il failover manuale tramite portale di Azure o Azure CLI.Again you can do a manual failover by using Azure CLI or Azure portal. Non si verificano perdite di dati o disponibilità prima, durante o dopo il failover manuale.There is no data or availability loss before, during or after the manual failover. L'applicazione continua a offrire disponibilità elevata.Your application continues to be highly available.

  • Account in più aree con un'area singola e scrittura (interruzione di area di lettura): durante un'interruzione del servizio in un'area di lettura, questi account mantengono la disponibilità elevata per le letture e le scritture.Multi-region accounts with a single-write region (read region outage): During a read region outage, these accounts will remain highly available for reads and writes. L’area interessata viene disconnessa automaticamente dall'area di scrittura e verrà contrassegnata offline.The impacted region is automatically disconnected from the write region and will be marked offline. Il SDK di Cosmos DB reindirizzamento leggerà le chiamate all'area successiva disponibile nell'elenco delle aree preferite.The Cosmos DB SDKs will redirect read calls to the next available region in the preferred region list. Se nessuna delle aree presenti nell'elenco è disponibile, viene eseguito il fallback automatico delle chiamate all'area di scrittura corrente.If none of the regions in the preferred region list is available, calls automatically fall back to the current write region. Non sono necessarie modifiche nel codice dell'applicazione per gestire le interruzioni di lettura a livello di area.No changes are required in your application code to handle read region outage. Quando alla fine l'area interessata è in di nuovo online, l'area di lettura interessata in precedenza viene sincronizzata automaticamente con l'area di scrittura corrente ed è disponibile anche in questo caso per servire le richieste di lettura.Eventually, when the impacted region is back online, the previously impacted read region will automatically sync with the current write region and will be available again to serve read requests. Le letture successive vengono reindirizzate all'area ripristinata senza richiedere alcuna modifica del codice dell'applicazione.Subsequent reads are redirected to the recovered region without requiring any changes to your application code. Durante il failover e la nuova partecipazione a di un'area precedentemente non riuscita, continua a essere rispettati da Cosmos DB garanzie di coerenza di lettura.During both failover and rejoining of a previously failed region, read consistency guarantees continue to be honored by Cosmos DB.

  • È possibile che gli account in area singola perdano disponibilità in caso di interruzione a livello di area.Single-region accounts may lose availability following a regional outage. È sempre consigliabile configurare almeno due aree (preferibilmente in almeno due scrittura aree) con l'account Cosmos per garantire la disponibilità elevata in qualsiasi momento.It's always recommended to set up at least two regions (preferably, at least two write regions) with your Cosmos account to ensure high availability at all times.

  • Anche in un evento raro e sfortunato quando l'area di Azure è irrecuperabile in modo permanente, non è senza perdita di dati se l'account Cosmos in più aree è configurato con il livello di coerenza predefinito sicuro.Even in an rare and unfortunate event when the Azure region is permanently irrecoverable, there is no data loss if your multi-region Cosmos account is configured with the default consistency level of Strong. In caso di un'area di scrittura in modo permanente irreversibile, per gli account Cosmos multiarea configurata con coerenza con obsolescenza associata, la finestra di perdita di dati potenziale è limitata alla finestra di decadimento ristretto (K oT); per sessione, livelli di coerenza con prefisso coerente e finale, la finestra di perdita di dati potenziale è limitata a un massimo di cinque secondi.In the event of a permanently irrecoverable write region, for the multi-region Cosmos accounts configured with bounded-staleness consistency, the potential data loss window is restricted to the staleness window (K or T); for session, consistent-prefix and eventual consistency levels, the potential data loss window is restricted to a maximum of five seconds.

Supporto delle Zone di disponibilitàAvailability Zone support

Azure Cosmos DB è un servizio di database multimaster distribuiti a livello globale che offre disponibilità elevata e resilienza durante le interruzioni a livello di area.Azure Cosmos DB is a globally distributed, multi-master database service that provides high availability and resiliency during regional outages. Inoltre per attraversare la resilienza di area, è ora possibile abilitare ridondanza della zona quando si seleziona un'area da associare il database di Azure Cosmos.In addition to cross region resiliency, you can now enable zone redundancy when selecting a region to associate with your Azure Cosmos database.

Grazie al supporto di zona di disponibilità, Azure Cosmos DB assicura le repliche vengono posizionate in più zone all'interno di una determinata area per fornire disponibilità elevata e resilienza durante gli errori di zona.With Availability Zone support, Azure Cosmos DB will ensure replicas are placed across multiple zones within a given region to provide high availability and resiliency during zonal failures. Sono state apportate modifiche alla latenza e di altri contratti di servizio in questa configurazione.There are no changes to latency and other SLAs in this configuration. In caso di errore una singola zona, ridondanza di zona fornisce durabilità completa dei dati con valore RPO pari a 0 e disponibilità con RTO = 0.In the event of a single zone failure, zone redundancy provides full data durability with RPO=0 and availability with RTO=0.

Ridondanza di zona è una capacità supplementare per il replica multimaster funzionalità.Zone redundancy is a supplemental capability to the multi-master replication feature. Ridondanza di zona da solo non può essere ritenuta affidabile per ottenere la resilienza a livello di area.Zone redundancy alone cannot be relied upon to achieve regional resiliency. In caso di interruzioni a livello di area o l'accesso a bassa latenza tra le aree, ad esempio, è consigliabile avere più aree di scrittura oltre alla ridondanza di zona.For example, in the event of regional outages or low latency access across the regions, it’s advised to have multiple write regions in addition to zone redundancy.

Quando si configurano le scritture tra più aree per l'account Azure Cosmos, è possibile scegliere la ridondanza di zona senza costi aggiuntivi.When configuring multi-region writes for your Azure Cosmos account, you can opt into zone redundancy at no extra cost. In caso contrario, vedere la nota sotto riguardanti il piano tariffario per il supporto di ridondanza di zona.Otherwise, please see the note below regarding the pricing for zone redundancy support. È possibile abilitare la ridondanza di zona in un'area esistente dell'account di Azure Cosmos rimuovendo l'area e aggiungerlo nuovamente con la ridondanza della zona abilitata.You can enable zone redundancy on an existing region of your Azure Cosmos account by removing the region and adding it back with the zone redundancy enabled.

Questa funzionalità è disponibile nelle aree di Azure seguenti:This feature is available in following Azure regions:

  • Regno Unito meridionaleUK South
  • Asia sud-orientaleSoutheast Asia

Nota

L'abilitazione di zone di disponibilità per una singola area account di Azure Cosmos comporterà addebiti equivalenti all'aggiunta di aree geografiche aggiuntive all'account.Enabling Availability Zones for a single region Azure Cosmos account will result in charges that are equivalent to adding an additional region to your account. Per altre informazioni sui prezzi, vedere la pagina dei prezzi e il costi tra più aree in Azure Cosmos DB articoli.For details on pricing, see the pricing page and the multi-region cost in Azure Cosmos DB articles.

La tabella seguente riepiloga le funzionalità a disponibilità elevata delle varie configurazioni di account:The following table summarizes the high availability capability of various account configurations:

KPIKPI Singola area senza zone di disponibilità (Non-AZ)Single region without Availability Zones (Non-AZ) In una singola area con zone di disponibilità (AZ)Single region with Availability Zones (AZ) Scrive in più aree con le zone di disponibilità (AZ, 2 aree): l'impostazione consigliata nella maggior parteMulti-region writes with Availability Zones (AZ, 2 regions) – Most recommended setting
Contratto di servizio con disponibilità di scritturaWrite availability SLA 99,99%99.99% 99,99%99.99% 99,999%99.999%
Contratto di servizio con disponibilità in letturaRead availability SLA 99,99%99.99% 99,99%99.99% 99,999%99.999%
PrezzoPrice Tariffa di fatturazione in una singola areaSingle region billing rate Tariffa di fatturazione di un'area singola zona di disponibilitàSingle region Availability Zone billing rate Tariffa di fatturazione in più areeMulti-region billing rate
Errori della zona – perdita di datiZone failures – data loss Perdita di datiData loss Nessuna perdita di datiNo data loss Nessuna perdita di datiNo data loss
Errori della zona-disponibilitàZone failures – availability Perdita di disponibilitàAvailability loss Senza perdita di disponibilitàNo availability loss Senza perdita di disponibilitàNo availability loss
Latenza di letturaRead latency Tra areeCross region Tra areeCross region BassoLow
Latenza di scritturaWrite latency Tra areeCross region Tra areeCross region BassoLow
Interruzione dell'alimentazione locale – perdita di datiRegional outage – data loss Perdita di datiData loss Perdita di datiData loss Perdita di datiData loss

Se uso limitato della coerenza a decadimento ristretto con più aree e multimaster, perdita di dati è limitata al decadimento ristretto configurato per l'account.When using bounded staleness consistency with multi master and more than one region, data loss is limited to the bounded staleness configured on your account.

Perdita di dati durante l'interruzione dell'alimentazione locale può essere evitata configurando una coerenza assoluta in più aree.Data loss during regional outage can be avoided by configuring strong consistency with multiple regions. Questa opzione include compromessi che influiscono sulle prestazioni e disponibilità.This option comes with tradeoffs that impact availability and performance.
Interruzione dell'alimentazione locale-disponibilitàRegional outage –availability Perdita di disponibilitàAvailability loss Perdita di disponibilitàAvailability loss Senza perdita di disponibilitàNo availability loss
Velocità effettivaThroughput Provisioning di UR X della velocità effettivaX RU/s provisioned throughput Provisioning di UR X della velocità effettivaX RU/s provisioned throughput 2 x velocità effettiva con provisioning di UR/sec2X RU/s provisioned throughput

Questa modalità di configurazione richiede due volte la quantità di velocità effettiva rispetto a una singola area con zone di disponibilità perché sono presenti due aree.This configuration mode requires twice the amount of throughput when compared to a single region with Availability Zones because there are two regions.

Quando si aggiunge un'area per gli account Cosmos Azure nuovi o esistenti, è possibile abilitare la ridondanza di zona.You can enable zone redundancy when adding a region to new or existing Azure Cosmos accounts. Attualmente, è possibile abilitare solo la ridondanza di zona usando i modelli di Azure Resource Manager o PowerShell.Currently, you can only enable zone redundancy by using PowerShell or Azure Resource Manager templates. Per abilitare la ridondanza di zona per l'account Cosmos Azure, è consigliabile impostare il isZoneRedundant flag per true per una località specifica.To enable zone redundancy on your Azure Cosmos account, you should set the isZoneRedundant flag to true for a specific location. È possibile impostare questo flag all'interno della proprietà di percorsi.You can set this flag within the locations property. Ad esempio, il frammento di powershell seguente consente la ridondanza di zona per l'area "Asia sud-orientale":For example, the following powershell snippet enables zone redundancy for the "Southeast Asia" region:

$locations = @( 
    @{ "locationName"="Southeast Asia"; "failoverPriority"=0; "isZoneRedundant"= "true" }, 
    @{ "locationName"="East US"; "failoverPriority"=1 } 
) 

Compilazione di applicazioni a disponibilità elevataBuilding highly available applications

  • Per garantire una disponibilità elevata di scrittura e lettura, configurare il proprio account Cosmos fino a occupare almeno due aree con aree a scrittura multipla.To ensure high write and read availability, configure your Cosmos account to span at least two regions with multiple-write regions. Questa configurazione fornirà la massima disponibilità, latenza più bassa e garantire la massima scalabilità per le letture e scritture sono supportate da contratti di servizio.This configuration will provide the highest availability, lowest latency, and best scalability for both reads and writes backed by SLAs. Per altre informazioni, vedere come configurare l'account Cosmos con più aree di scrittura.To learn more, see how to configure your Cosmos account with multiple write-regions.

  • Per gli account Cosmos in più aree che sono configurati con un'area di scrittura singola, abilitare il failover automatico usando l'interfaccia della riga di comando di Azure o il portale di Azure.For multi-region Cosmos accounts that are configured with a single-write region, enable automatic-failover by using Azure CLI or Azure portal. Dopo aver abilitato il failover automatico, quando si verifica un'emergenza a livello di aera Cosmos DB esegue automaticamente il failover dell'account.After you enable automatic failover, whenever there is a regional disaster, Cosmos DB will automatically failover your account.

  • Anche se l'account Cosmos è a disponibilità elevata, l'applicazione potrebbe non essere correttamente progettata per garantire disponibilità elevata.Even if your Cosmos account is highly available, your application may not be correctly designed to remain highly available. Per testare la disponibilità elevata end-to-end dell'applicazione, chiamare periodicamente il failover manuale tramite il portale di Azure o Azure CLI, come parte del test dell'applicazione o del ripristino di emergenza (DR) drill.To test the end-to-end high availability of your application, periodically invoke the manual failover by using Azure CLI or Azure portal, as a part of your application testing or disaster-recovery (DR) drills.

  • All'interno di un ambiente di database distribuito globalmente, è presente una relazione diretta tra la durabilità di livello e i dati di coerenza in presenza di un'interruzione a livello di area.Within a globally distributed database environment, there is a direct relationship between the consistency level and data durability in the presence of a region-wide outage. Quando si sviluppa il piano di continuità aziendale, è necessario conoscere il tempo massimo accettabile prima che l'applicazione venga ripristinata completamente dopo un evento di arresto improvviso.As you develop your business continuity plan, you need to understand the maximum acceptable time before the application fully recovers after a disruptive event. Il tempo necessario per il ripristino completo di un'applicazione è noto come obiettivo del tempo di ripristino (RTO).The time required for an application to fully recover is known as recovery time objective (RTO). È anche necessario conoscere la perdita massima di aggiornamenti di dati recenti che l'applicazione è in grado di tollerare durante il ripristino dopo un evento di arresto improvviso.You also need to understand the maximum period of recent data updates the application can tolerate losing when recovering after a disruptive event. Il periodo di tempo degli aggiornamenti che è possibile perdere è noto come obiettivo del punto di ripristino (RPO).The time period of updates that you might afford to lose is known as recovery point objective (RPO). Per l'obiettivo del punto di ripristino (RPO) e l'obiettivo del tempo di ripristino (RTO) per Azure Cosmos DB, vedere Livelli di coerenza e durabilità dei datiTo see the RPO and RTO for Azure Cosmos DB, see Consistency levels and data durability

Passaggi successiviNext steps

Successivamente si possono leggere gli articoli seguenti:Next you can read the following articles: