Hur ger Azure Cosmos DB hög tillgänglighet?How does Azure Cosmos DB provide high availability?

Azure Cosmos DB transparent replikera dina data över alla Azure-regioner som är kopplade till ditt Azure Cosmos-konto.Azure Cosmos DB transparently replicates your data across all the Azure regions associated with your Azure Cosmos account. Azure Cosmos DB använder flera lager av redundans för dina data som visas i följande bild:Azure Cosmos DB employs multiple layers of redundancy for your data as shown in the following image:

Fysisk partitionering

  • Data i Azure Cosmos-behållare är vågrätt partitionerade.The data within Azure Cosmos containers is horizontally partitioned.

  • En partitionsuppsättning är en samling med flera replik uppsättningar.A partition-set is a collection of multiple replica-sets. I varje region skyddas varje partition av en replik uppsättning med alla skrivningar som replikeras och varaktigt som allokeras av en majoritet av repliker.Within each region, every partition is protected by a replica-set with all writes replicated and durably committed by a majority of replicas. Repliker distribueras i så många som 10-20 fel domäner.Replicas are distributed across as many as 10-20 fault domains.

  • Varje partition i alla regioner replikeras.Each partition across all the regions is replicated. Varje region innehåller alla datapartitioner för en Azure Cosmos-behållare och kan godkänna skrivningar och betjäna läsningar.Each region contains all the data partitions of an Azure Cosmos container and can accept writes and serve reads.

Om ditt Azure Cosmos-konto är fördelat i N Azure-regioner finns det minst n x 4 kopior av alla dina data.If your Azure Cosmos account is distributed across N Azure regions, there will be at least N x 4 copies of all your data. Att ha ett Azure Cosmos-konto i fler än två regioner förbättrar tillgängligheten för ditt program och ger låg latens i de associerade regionerna.Generally having an Azure Cosmos account in more than 2 regions improves the availability of your application and provides low latency across the associated regions.

Service avtal för tillgänglighetSLAs for availability

Som en globalt distribuerad databas tillhandahåller Azure Cosmos DB omfattande service avtal som omfattar data flöde, svars tid vid 99 percentil, konsekvens och hög tillgänglighet.As a globally distributed database, Azure Cosmos DB provides comprehensive SLAs that encompass throughput, latency at the 99th percentile, consistency, and high availability. I tabellen nedan visas garantier för hög tillgänglighet som tillhandahålls av Azure Cosmos DB för enkla och flera region konton.The table below shows the guarantees for high availability provided by Azure Cosmos DB for single and multi-region accounts. För hög tillgänglighet konfigurerar du alltid dina Azure Cosmos-konton så att de har flera Skriv regioner.For high availability, always configure your Azure Cosmos accounts to have multiple write regions.

ÅtgärdstypOperation type Enskild regionSingle region Flera regioner (enstaka regions skrivningar)Multi-region (single region writes) Flera regioner (skrivningar i flera regioner)Multi-region (multi-region writes)
SkrivningarWrites 99,9999.99 99,9999.99 99,99999.999
LäsningarReads 99,9999.99 99,99999.999 99,99999.999

Anteckning

I praktiken är den faktiska Skriv tillgängligheten för begränsat inaktuellitet, session, konsekvent prefix och eventuella konsekvens modeller betydligt högre än den publicerade service avtal.In practice, the actual write availability for bounded staleness, session, consistent prefix and eventual consistency models is significantly higher than the published SLAs. Den faktiska Läs tillgängligheten för alla konsekvens nivåer är betydligt högre än den publicerade service avtal.The actual read availability for all consistency levels is significantly higher than the published SLAs.

Hög tillgänglighet med Azure Cosmos DB i händelse av regionala avbrottHigh availability with Azure Cosmos DB in the event of regional outages

I sällsynta fall av regionala avbrott ser Azure Cosmos DB till att databasen alltid är hög tillgänglig.For the rare cases of regional outage, Azure Cosmos DB makes sure your database is always highly available. Följande information inhämtas Azure Cosmos DB under ett avbrott, beroende på din Azure Cosmos-konto konfiguration:The following details capture Azure Cosmos DB behavior during an outage, depending on your Azure Cosmos account configuration:

  • Med Azure Cosmos DB, innan en Skriv åtgärd bekräftas till klienten, så är data varaktigt allokerade av ett kvorum av repliker inom den region som accepterar Skriv åtgärder.With Azure 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.

  • Konton med flera regioner som kon figurer ATS med flera-Write-regioner är hög tillgängliga för både skrivningar och läsningar.Multi-region accounts configured with multiple-write regions will be highly available for both writes and reads. Regionala redundanser är omedelbara och kräver inte några ändringar från programmet.Regional failovers are instantaneous and don't require any changes from the application.

  • Konton med en region kan förlora tillgänglighet efter ett regionalt avbrott.Single-region accounts may lose availability following a regional outage. Vi rekommenderar alltid att du konfigurerar minst två regioner (helst, minst två Skriv regioner) med ditt Azure Cosmos-konto för att säkerställa hög tillgänglighet hela tiden.It's always recommended to set up at least two regions (preferably, at least two write regions) with your Azure Cosmos account to ensure high availability at all times.

Konton för flera regioner med en enkel skrivnings region (Skriv åtgärds avbrott)Multi-region accounts with a single-write region (write region outage)

  • Under ett avbrott i Skriv region befordrar Azure Cosmos-kontot automatiskt en sekundär region som är den nya primära Skriv regionen när aktivering av automatisk redundans har kon figurer ATS på Azure Cosmos-kontot.During a write region outage, the Azure Cosmos account will automatically promote a secondary region to be the new primary write region when enable automatic failover is configured on the Azure Cosmos account. När den är aktive rad kommer redundansväxlingen att ske till en annan region i ordningen för regionens prioritet som du har angett.When enabled, the failover will occur to another region in the order of region priority you've specified.
  • När den tidigare påverkade regionen är online igen görs eventuella Skriv data som inte har repliker ATS när regionen misslyckades, görs tillgängliga via feeden för konflikter.When the previously impacted region is back online, any write data that was not replicated when the region failed, is made available through the conflicts feed. Program kan läsa konflikten, lösa konflikterna baserat på programspecifik logik och skriva uppdaterade data tillbaka till Azure Cosmos-behållaren efter behov.Applications can read the conflicts feed, resolve the conflicts based on the application-specific logic, and write the updated data back to the Azure Cosmos container as appropriate.
  • När den tidigare påverkade Skriv regionen återställs blir den automatiskt tillgänglig som en Läs region.Once the previously impacted write region recovers, it becomes automatically available as a read region. Du kan växla tillbaka till den återställda regionen som Skriv region.You can switch back to the recovered region as the write region. Du kan byta region med hjälp av PowerShell, Azure CLI eller Azure Portal.You can switch the regions by using PowerShell, Azure CLI or Azure portal. Det finns Ingen förlust av data eller tillgänglighet innan, under eller efter att du byter Skriv region och programmet fortfarande har hög tillgänglighet.There is no data or availability loss before, during or after you switch the write region and your application continues to be highly available.

Viktigt

Vi rekommenderar starkt att du konfigurerar de Azure Cosmos-konton som används för produktions arbets belastningar för att Aktivera automatisk redundans.It is strongly recommended that you configure the Azure Cosmos accounts used for production workloads to enable automatic failover. Manuell redundans kräver anslutning mellan sekundär och primär Skriv region för att slutföra en konsekvens kontroll för att säkerställa att inga data går förlorade under redundansväxlingen.Manual failover requires connectivity between secondary and primary write region to complete a consistency check to ensure there is no data loss during the failover. Om den primära regionen inte är tillgänglig kan konsekvens kontrollen inte slutföras och den manuella redundansväxlingen Miss lyckas, vilket leder till förlust av Skriv tillgänglighet.If the primary region is unavailable, this consistency check cannot complete and the manual failover will not succeed, resulting in loss of write availability.

Konton med flera regioner och en enkel-eller region (Läs regions avbrott)Multi-region accounts with a single-write region (read region outage)

  • Under ett avbrott i läsnings området är Azure Cosmos-konton som använder en konsekvens nivå eller en stark konsekvens med tre eller flera Läs regioner fortfarande hög tillgängliga för läsning och skrivning.During a read region outage, Azure Cosmos accounts using any consistency level or strong consistency with three or more read regions will remain highly available for reads and writes.
  • Azure Cosmos-konton som använder stark konsekvens med två eller färre Läs regioner (som omfattar Skriv regionen läsning &) förlorar läsnings skrivnings tillgänglighet under ett Läs regions avbrott.Azure Cosmos accounts using strong consistency with two or fewer read regions (which includes the read & write region) will lose read write availability during a read region outage.
  • Den berörda regionen kopplas från automatiskt och kommer att markeras som offline.The impacted region is automatically disconnected and will be marked offline. Azure Cosmos DB SDK : er omdirigerar Läs anrop till nästa tillgängliga region i listan över önskade regioner.The Azure Cosmos DB SDKs will redirect read calls to the next available region in the preferred region list.
  • Om ingen av regionerna i listan över föredragna regioner är tillgänglig kan återgår anrop automatiskt till den aktuella skrivregionen.If none of the regions in the preferred region list is available, calls automatically fall back to the current write region.
  • Inga ändringar krävs i din program kod för att hantera avbrott i läsnings området.No changes are required in your application code to handle read region outage. När den berörda läsnings regionen är online synkroniseras den automatiskt med den aktuella Skriv regionen och kommer att vara tillgänglig igen för att hantera Läs begär Anden.When the impacted read region is back online it will automatically sync with the current write region and will be available again to serve read requests.
  • Efterföljande läsningar omdirigeras till den återställda regionen utan att det krävs några ändringar i din programkod.Subsequent reads are redirected to the recovered region without requiring any changes to your application code. Vid både redundans och åter anslutning av en tidigare misslyckad region, kan Läs konsekvens garantier fortsätta att följas av Azure Cosmos DB.During both failover and rejoining of a previously failed region, read consistency guarantees continue to be honored by Azure Cosmos DB.
  • Även i en sällsynt och olycklig-händelse när Azure-regionen är permanent oåterkalleligt, sker ingen data förlust om ditt Azure Cosmos-konto i flera regioner har kon figurer ATS med stark konsekvens.Even in a rare and unfortunate event when the Azure region is permanently irrecoverable, there is no data loss if your multi-region Azure Cosmos account is configured with Strong consistency. I händelse av en permanent oåterkalleligt Skriv region, ett Azure Cosmos-konto med flera regioner som kon figurer ATS med begränsad föråldrad konsekvens, är den potentiella data förlust perioden begränsad till inaktuella fönster (k eller t) där K = 100000 uppdateringar och T = 5 minuter.In the event of a permanently irrecoverable write region, a multi-region Azure Cosmos account configured with bounded-staleness consistency, the potential data loss window is restricted to the staleness window (K or T) where K=100,000 updates and T=5 minutes. För session, konsekvent prefix och eventuell konsekvens, är den potentiella data förlust perioden begränsad till högst 15 minuter.For session, consistent-prefix and eventual consistency levels, the potential data loss window is restricted to a maximum of 15 minutes. Mer information om RTO och mål för Azure Cosmos DB finns i konsekvens nivåer och data hållbarhetFor more information on RTO and RPO targets for Azure Cosmos DB, see Consistency levels and data durability

Support för tillgänglighets zonAvailability Zone support

Förutom återhämtning i flera regioner kan du nu aktivera zon redundans när du väljer en region som ska associeras med din Azure Cosmos-databas.In addition to cross region resiliency, you can now enable zone redundancy when selecting a region to associate with your Azure Cosmos database.

Med support för tillgänglighets zon kan Azure Cosmos DB se till att repliker placeras i flera zoner inom en bestämd region för att ge hög tillgänglighet och återhämtning under zonindelade-haverier.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. Det finns inga ändringar i svars tid och andra service avtal i den här konfigurationen.There are no changes to latency and other SLAs in this configuration. I händelse av ett enskilt zon haveri ger zon redundans fullständig data hållbarhet med återställnings punkt = 0 och tillgänglighet med RTO = 0.In the event of a single zone failure, zone redundancy provides full data durability with RPO=0 and availability with RTO=0.

Zon redundans är en kompletterande funktion för replikeringen i skriv funktionen i flera regioner .Zone redundancy is a supplemental capability to the replication in multi-region writes feature. Zon redundans kan inte förlita sig på att uppnå regional återhämtning.Zone redundancy alone cannot be relied upon to achieve regional resiliency. I händelse av regionala avbrott eller åtkomst med låg fördröjning i regionerna, rekommenderar vi till exempel att du har flera Skriv regioner förutom zon redundans.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.

När du konfigurerar flera regions skrivningar för ditt Azure Cosmos-konto kan du välja zon redundans utan extra kostnad.When configuring multi-region writes for your Azure Cosmos account, you can opt into zone redundancy at no extra cost. I annat fall kan du läsa avsnittet om prissättningen av stöd för zon redundans.Otherwise, please see the note below regarding the pricing for zone redundancy support. Du kan aktivera zon redundans i en befintlig region för ditt Azure Cosmos-konto genom att ta bort regionen och lägga till den igen med zon redundansen aktive rad.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.

Den här funktionen är tillgänglig i: Storbritannien, södra, Sydostasien, USA, östra USA, östra USA 2, centrala USA, Västeuropa, västra USA 2, Östra Japan, norra Europa, centrala Australien, östra USA 2 EUAP regioner.This feature is available in: UK South, Southeast Asia, East US, East US 2, Central US, West Europe, West US 2, Japan East, North Europe, France Central,Australia East, East US 2 EUAP regions.

I följande tabell sammanfattas funktionen för hög tillgänglighet för olika konto konfigurationer:The following table summarizes the high availability capability of various account configurations:

KPIKPI En region utan Tillgänglighetszoner (icke-AZ)Single region without Availability Zones (Non-AZ) En region med Tillgänglighetszoner (AZ)Single region with Availability Zones (AZ) Skrivningar i flera regioner med Tillgänglighetszoner (AZ, 2 regioner) – den rekommenderade inställningenMulti-region writes with Availability Zones (AZ, 2 regions) – Most recommended setting
SLA för Skriv tillgänglighetWrite availability SLA 99,99 %99.99% 99,99 %99.99% 99,999 %99.999%
SLA för Läs tillgänglighetRead availability SLA 99,99 %99.99% 99,99 %99.99% 99,999 %99.999%
PrisPrice Fakturerings taxa för enskild regionSingle region billing rate Fakturerings takt för tillgänglighets zon för enskild regionSingle region Availability Zone billing rate Fakturerings taxa för flera regionerMulti-region billing rate
Zon haverier – data förlustZone failures – data loss Data förlustData loss Ingen data förlustNo data loss Ingen data förlustNo data loss
Zon haverier – tillgänglighetZone failures – availability Tillgänglighets förlustAvailability loss Ingen förlust av tillgänglighetNo availability loss Ingen förlust av tillgänglighetNo availability loss
Läs fördröjningRead latency Mellan regionCross region Mellan regionCross region LågLow
Skriv fördröjningWrite latency Mellan regionCross region Mellan regionCross region LågLow
Regionalt avbrott – data förlustRegional outage – data loss Data förlustData loss Data förlustData loss Data förlustData loss

När du använder begränsad föråldrad konsekvens med flera Skriv regioner och fler än en region begränsas data förlusten till den begränsade inaktuellheten som kon figurer ATS på ditt kontoWhen using bounded staleness consistency with multiple write regions and more than one region, data loss is limited to the bounded staleness configured on your account

Du kan undvika data förlust under ett regionalt avbrott genom att konfigurera stark konsekvens med flera regioner.You can avoid data loss during a regional outage by configuring strong consistency with multiple regions. Det här alternativet innehåller en kompromiss som påverkar tillgänglighet och prestanda.This option comes with trade-offs that affect availability and performance. Den kan bara konfigureras på konton som kon figurer ATS för skrivningar i en region.It can be configured only on accounts that are configured for single-region writes.
Regionalt avbrott – tillgänglighetRegional outage – availability Tillgänglighets förlustAvailability loss Tillgänglighets förlustAvailability loss Ingen förlust av tillgänglighetNo availability loss
DataflödeThroughput X RU/s-allokerat data flödeX RU/s provisioned throughput X RU/s tillhandahållet data flöde * 1,25X RU/s provisioned throughput * 1.25 2X RU/s-allokerat data flöde2X RU/s provisioned throughput

Det här konfigurations läget kräver två gånger mängden data flöde jämfört med en region med Tillgänglighetszoner eftersom det finns två regioner.This configuration mode requires twice the amount of throughput when compared to a single region with Availability Zones because there are two regions.

Anteckning

Om du vill aktivera stöd för tillgänglighets zoner för ett Azure Cosmos-konto med flera regioner måste kontot ha skrivningar med flera regioner aktiverade.To enable Availability Zone support for a multi region Azure Cosmos account, the account must have multi-region writes writes enabled.

Du kan aktivera zon redundans när du lägger till en region i nya eller befintliga Azure Cosmos-konton.You can enable zone redundancy when adding a region to new or existing Azure Cosmos accounts. Om du vill aktivera zon redundans på ditt Azure Cosmos-konto, bör du ange isZoneRedundant flaggan till true för en angiven plats.To enable zone redundancy on your Azure Cosmos account, you should set the isZoneRedundant flag to true for a specific location. Du kan ange den här flaggan i egenskapen locations.You can set this flag within the locations property. Följande PowerShell-kodfragment aktiverar till exempel zon redundans för regionen "Sydostasien":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; "isZoneRedundant"= "true" }
)

Följande kommando visar hur du aktiverar zon redundans för regionerna "öster" och "WestUS2":The following command shows how to enable zone redundancy for the "EastUS" and "WestUS2" regions:

az cosmosdb create \
  --name mycosmosdbaccount \
  --resource-group myResourceGroup \
  --kind GlobalDocumentDB \
  --default-consistency-level Session \
  --locations regionName=EastUS failoverPriority=0 isZoneRedundant=True \
  --locations regionName=WestUS2 failoverPriority=1 isZoneRedundant=True

Du kan aktivera Tillgänglighetszoner genom att använda Azure Portal när du skapar ett Azure Cosmos-konto.You can enable Availability Zones by using Azure portal when creating an Azure Cosmos account. När du skapar ett konto, se till att aktivera GEO-redundans, flera regioneroch välj en region där Tillgänglighetszoner stöds:When you create an account, make sure to enable the Geo-redundancy, Multi-region Writes, and choose a region where Availability Zones are supported:

Fysisk partitionering

Skapa program med hög tillgänglighetBuilding highly available applications

  • Granska det förväntade beteendet för Azure Cosmos-SDK : er under dessa händelser och som är de konfigurationer som påverkar den.Review the expected behavior of the Azure Cosmos SDKs during these events and which are the configurations that affect it.

  • För att säkerställa hög Skriv-och Läs tillgänglighet konfigurerar du ditt Azure Cosmos-konto så att det omfattar minst två regioner med flera-Write-regioner.To ensure high write and read availability, configure your Azure Cosmos account to span at least two regions with multiple-write regions. Med den här konfigurationen får du högsta tillgänglighet, lägsta svars tid och bästa skalbarhet för både läsningar och skrivningar som backas upp av service avtal.This configuration will provide the highest availability, lowest latency, and best scalability for both reads and writes backed by SLAs. Mer information finns i så här konfigurerar du ditt Azure Cosmos-konto med flera Write-regioner.To learn more, see how to configure your Azure Cosmos account with multiple write-regions.

  • För Azure Cosmos-konton med flera regioner som kon figurer ATS med en enda skrivbar region aktiverar du automatisk redundans med hjälp av Azure CLI eller Azure Portal.For multi-region Azure Cosmos accounts that are configured with a single-write region, enable automatic-failover by using Azure CLI or Azure portal. När du har aktiverat automatisk redundans när det uppstår en regional katastrof, kan Cosmos DB automatiskt redundansväxla ditt konto.After you enable automatic failover, whenever there is a regional disaster, Cosmos DB will automatically failover your account.

  • Även om ditt Azure Cosmos-konto har hög tillgänglighet är ditt program kanske inte korrekt utformat för att hålla hög tillgänglighet.Even if your Azure Cosmos account is highly available, your application may not be correctly designed to remain highly available. Om du vill testa hög tillgänglighet från slut punkt till slut punkt för ditt program, som en del av dina program testnings-eller haveri beredskap (DR), kan du tillfälligt inaktivera automatisk redundans för kontot, anropa den manuella redundansväxlingen med hjälp av PowerShell, Azure CLI eller Azure Portaloch sedan övervaka programmets redundans.To test the end-to-end high availability of your application, as a part of your application testing or disaster recovery (DR) drills, temporarily disable automatic-failover for the account, invoke the manual failover by using PowerShell, Azure CLI or Azure portal, then monitor your application's failover. När du är klar kan du växla tillbaka till den primära regionen och återställa automatisk redundans för kontot.Once complete, you can fail back over to the primary region and restore automatic-failover for the account.

  • I en globalt distribuerad databas miljö finns det ett direkt förhållande mellan konsekvens nivån och data hållbarhet i närvaro av ett områdes omfattande avbrott.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. När du utvecklar din verksamhets kontinuitets plan måste du förstå hur lång tid det tar innan programmet återställs fullständigt efter en störnings händelse.As you develop your business continuity plan, you need to understand the maximum acceptable time before the application fully recovers after a disruptive event. Tiden som krävs för att ett program ska återställas fullständigt kallas för återställnings tids mål (RTO).The time required for an application to fully recover is known as recovery time objective (RTO). Du måste också förstå hur lång tid det tar för nya data uppdateringar som programmet kan tolerera vid återställning efter en störnings händelse.You also need to understand the maximum period of recent data updates the application can tolerate losing when recovering after a disruptive event. Tidsperioden för uppdateringar som du kan ha råd att förlora kallas mål för återställningspunkt (RPO).The time period of updates that you might afford to lose is known as recovery point objective (RPO). Om du vill se återställnings-och RTO för Azure Cosmos DB, se konsekvens nivåer och data hållbarhetTo see the RPO and RTO for Azure Cosmos DB, see Consistency levels and data durability

Nästa stegNext steps

Härnäst kan du läsa följande artiklar:Next you can read the following articles: