Wysoka dostępność dzięki Azure Cosmos DBHigh availability with Azure Cosmos DB

Azure Cosmos DB w sposób przezroczysty replikuje dane do wszystkich regionów świadczenia usługi Azure skojarzonych z Twoim kontem Cosmos.Azure Cosmos DB transparently replicates your data across all the Azure regions associated with your Cosmos account. Cosmos DB wykorzystuje wiele warstw nadmiarowości danych, jak pokazano na poniższej ilustracji:Cosmos DB employs multiple layers of redundancy for your data as shown in the following image:

Partycjonowanie fizyczne

  • Dane w kontenerach Cosmos są podzielone na partycje w poziomie.The data within Cosmos containers is horizontally partitioned.

  • W każdym regionie każda partycja jest chroniona przez zestaw replik, a wszystkie zapisy są replikowane i trwale zatwierdzone przez większość replik.Within each region, every partition is protected by a replica-set with all writes replicated and durably committed by a majority of replicas. Repliki są dystrybuowane w wielu domenach błędów 10-20.Replicas are distributed across as many as 10-20 fault domains.

  • Każda partycja we wszystkich regionach jest replikowana.Each partition across all the regions is replicated. Każdy region zawiera wszystkie partycje danych kontenera Cosmos i może akceptować zapisy i obsłużyć odczyty.Each region contains all the data partitions of a Cosmos container and can accept writes and serve reads.

Jeśli Twoje konto Cosmos jest dystrybuowane w regionach platformy Azure , będą dostępne co najmniej N x 4 kopie wszystkich danych.If your Cosmos account is distributed across N Azure regions, there will be at least N x 4 copies of all your data. Oprócz zapewniania dostępu do danych o małym opóźnieniu i skalowanie przepływności zapisu/odczytu w regionach skojarzonych z kontem Cosmos, mając więcej regionów (wyższy N) jeszcze bardziej zwiększa dostępność.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.

Umowy SLA do dostępnościSLAs for availability

Jako globalnie dystrybuowana baza danych Cosmos DB zapewnia kompleksową umowy SLA, która obejmuje przepływność, opóźnienie w 99 percentylu, spójności i wysokiej dostępności.As a globally distributed database, Cosmos DB provides comprehensive SLAs that encompass throughput, latency at the 99th percentile, consistency, and high availability. W poniższej tabeli przedstawiono gwarancje dotyczące wysokiej dostępności zapewnianej przez Cosmos DB w przypadku kont z pojedynczym i wieloregionem.The table below shows the guarantees for high availability provided by Cosmos DB for single and multi-region accounts. Aby zapewnić wysoką dostępność, należy zawsze skonfigurować konta usługi Cosmos tak, aby zawierały wiele regionów zapisu.For high availability, always configure your Cosmos accounts to have multiple write regions.

Typ operacjiOperation type Pojedynczy regionSingle region Wiele regionów (zapis w jednym regionie)Multi-region (single region writes) Wiele regionów (zapisy w regionie wieloregionowym)Multi-region (multi-region writes)
ZapisujeWrites 99,9999.99 99,9999.99 99,99999.999
CzytaReads 99,9999.99 99,99999.999 99,99999.999

Uwaga

W ramach tej usługi rzeczywista dostępność zapisu dla nieodświeżonego, sesji, spójnego prefiksu i wzorów spójności ostatecznej jest znacznie wyższa niż opublikowana umowy SLA.In practice, the actual write availability for bounded staleness, session, consistent prefix and eventual consistency models is significantly higher than the published SLAs. Rzeczywista dostępność odczytu dla wszystkich poziomów spójności jest znacznie wyższa niż opublikowana umowy SLA.The actual read availability for all consistency levels is significantly higher than the published SLAs.

Wysoka dostępność z Cosmos DB w przypadku awarii regionalnejHigh availability with Cosmos DB in the event of regional outages

Awarie regionalne nie są niczym niezwykłym, a usługa Azure Cosmos DB zapewnia, że baza danych jest zawsze wysoko dostępna.Regional outages aren't uncommon, and Azure Cosmos DB makes sure your database is always highly available. Następujące szczegóły przechwytują Cosmos DB zachowanie podczas przestoju, w zależności od konfiguracji konta Cosmos:The following details capture Cosmos DB behavior during an outage, depending on your Cosmos account configuration:

  • Gdy Cosmos DB, przed potwierdzeniem operacji zapisu do klienta dane są trwale przez kworum replik w regionie, który akceptuje operacje zapisu.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.

  • Konta z wieloma regionami skonfigurowane z regionami z wieloma zapisami będą mieć wysoką dostępność dla operacji zapisu i odczytu.Multi-region accounts configured with multiple-write regions will be highly available for both writes and reads. Regionalne przejścia w tryb failover są chwilowe i nie wymagają żadnych zmian w aplikacji.Regional failovers are instantaneous and don't require any changes from the application.

  • Konta wieloregionowe z regionem jednokrotnego zapisu (przestój w regionie zapisu):Multi-region accounts with a single-write region (write region outage):

    • Podczas przestoju w regionie zapisu te konta pozostaną wysoce dostępne do odczytu.During a write region outage, these accounts will remain highly available for reads. Aby żądania zapisu zostały wykonane pomyślnie, należy włączyć opcję Włącz automatyczną pracę awaryjną na koncie usługi Azure Cosmos.For the write requests to succeed, you must turn on the enable automatic failover option on your Azure Cosmos account. Włączenie tej opcji spowoduje przejście w tryb failover regionu, którego to dotyczy, do innego regionu w określonym priorytecie regionu.Enabling this option will failover the impacted region to another region in the order of region priority you’ve specified.
    • Gdy wcześniej zmieniony region jest w trybie online, wszelkie dane zapisu, które były Niereplikowane w przypadku niepowodzenia regionu, są udostępniane za pomocą źródła konfliktów.When the previously impacted region is back online, any write data that was unreplicated when the region failed, is made available through the conflicts feed. Aplikacje mogą odczytywać źródła konfliktów, rozwiązywać konflikty na podstawie logiki specyficznej dla aplikacji, a następnie zapisywać zaktualizowane dane z powrotem do kontenera platformy Azure Cosmos zgodnie z potrzebami.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.
    • Po odzyskaniu wcześniej zmienionego regionu zapisu zostanie on automatycznie udostępniony jako region odczytu.Once the previously impacted write region recovers, it becomes automatically available as a read region. Można wrócić do odzyskanego regionu jako region zapisu.You can switch back to the recovered region as the write region. Regiony można przełączyć przy użyciu interfejsu wiersza polecenia platformy Azure lub Azure Portal.You can switch the regions by using Azure CLI or Azure portal. Przed, w trakcie lub po przełączeniu regionu zapisu nie ma utraty danych ani dostępności , a aplikacja nadal będzie o wysokiej dostępności.There is no data or availability loss before, during or after you switch the write region and your application continues to be highly available.
  • Konta wieloregionowe z regionem jednokrotnego zapisu (awaria regionu odczytu):Multi-region accounts with a single-write region (read region outage):

    • Podczas przestoju regionu odczytu te konta pozostaną wysoce dostępne do odczytu i zapisu.During a read region outage, these accounts will remain highly available for reads and writes.
    • Region objęty wpływem jest automatycznie rozłączany z regionem zapisu i zostanie oznaczony jako offline.The impacted region is automatically disconnected from the write region and will be marked offline. Zestawy sdk Azure Cosmos DB będą przekierowywać wywołania odczytu do następnego dostępnego regionu na liście preferowanych regionów.The Azure Cosmos DB SDKs will redirect read calls to the next available region in the preferred region list.
    • Jeśli żaden z regionów na liście preferowanych regionów nie jest dostępny, wywołania automatycznie powracają do bieżącego regionu zapisu.If none of the regions in the preferred region list is available, calls automatically fall back to the current write region.
    • W kodzie aplikacji nie są wymagane żadne zmiany w celu obsługi awarii regionu odczytu.No changes are required in your application code to handle read region outage. Ostatecznie, gdy zagrożony region jest z powrotem w trybie online, wcześniej zmieniony region odczytu zostanie automatycznie zsynchronizowany z bieżącym regionem zapisu i będzie on ponownie dostępny do objęcia żądaniami odczytu.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.
    • Kolejne odczyty są przekierowywane do odzyskanego regionu bez konieczności wprowadzania jakichkolwiek zmian w kodzie aplikacji.Subsequent reads are redirected to the recovered region without requiring any changes to your application code. Podczas pracy w trybie failover i ponownego przyłączania do poprzedniego regionu, gwarancje spójności odczytu są nadal uznawane przez Cosmos DB.During both failover and rejoining of a previously failed region, read consistency guarantees continue to be honored by Cosmos DB.
  • Konta w jednym regionie mogą utracić dostępność po awarii regionalnej.Single-region accounts may lose availability following a regional outage. Zawsze zaleca się skonfigurowanie co najmniej dwóch regionów (najlepiej co najmniej dwóch regionów zapisu) przy użyciu konta Cosmos, aby zapewnić wysoką dostępność przez cały czas.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.

  • Nawet w rzadkich i niezbyt krótkich przypadkach, gdy region platformy Azure jest nieodwracalnie nieodwracalny, nie ma utraty danych, jeśli konto Cosmos dla wieloregionu jest skonfigurowane z domyślnym poziomem spójności o wartości Strong.Even in a 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. W przypadku trwałego odzyskania regionu zapisu dla wieloregionowych kont Cosmos skonfigurowanych ze spójnością nieodświeżoną, potencjalne okno utraty danych jest ograniczone do okna nieodświeżonego (K lub T); w przypadku sesji, spójnego i ostatecznego poziomu spójności, potencjalne okno utraty danych jest ograniczone do maksymalnie pięciu sekund.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.

Obsługa strefy dostępnościAvailability Zone support

Azure Cosmos DB to globalnie dystrybuowana usługa bazy danych z wieloma mastermi, która zapewnia wysoką dostępność i odporność na awarie w regionie.Azure Cosmos DB is a globally distributed, multi-master database service that provides high availability and resiliency during regional outages. Oprócz odporności między regionami można teraz włączyć nadmiarowość stref podczas wybierania regionu do skojarzenia z bazą danych 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.

W przypadku obsługi stref dostępności Azure Cosmos DB zapewnia, że repliki są umieszczane w wielu strefach w danym regionie w celu zapewnienia wysokiej dostępności i odporności podczas awarii stref.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. W tej konfiguracji nie wprowadzono żadnych zmian w czasie oczekiwania i innych umowy SLA.There are no changes to latency and other SLAs in this configuration. W przypadku awarii pojedynczej strefy nadmiarowość stref zapewnia pełną trwałość danych z elementem RPO = 0 i dostępnością z RTO = 0.In the event of a single zone failure, zone redundancy provides full data durability with RPO=0 and availability with RTO=0.

Nadmiarowość stref to dodatkowa funkcja replikacji z wieloma wzorcami .Zone redundancy is a supplemental capability to the multi-master replication feature. W celu uzyskania odporności regionalnej nie można korzystać z samej nadmiarowości strefy.Zone redundancy alone cannot be relied upon to achieve regional resiliency. Na przykład w przypadku regionalnego systemu przestoju lub małego opóźnienia w regionach zaleca się, aby oprócz nadmiarowości strefy była dostępna wiele regionów zapisu.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.

Podczas konfigurowania wieloregionowych zapisów dla konta usługi Azure Cosmos możesz zrezygnować z nadmiarowości strefy bez dodatkowych kosztów.When configuring multi-region writes for your Azure Cosmos account, you can opt into zone redundancy at no extra cost. W przeciwnym razie zapoznaj się z poniższymi uwagami dotyczącymi cen obsługi nadmiarowości stref.Otherwise, please see the note below regarding the pricing for zone redundancy support. Nadmiarowość strefy można włączyć w istniejącym regionie konta usługi Azure Cosmos, usuwając region i dodając go ponownie z włączonym nadmiarowością strefy.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.

Ta funkcja jest dostępna w następujących regionach świadczenia usługi Azure:This feature is available in following Azure regions:

  • Południowe Zjednoczone KrólestwoUK South
  • Azja Południowo-WschodniaSoutheast Asia
  • East USEast US
  • Wschodnie stany USA 2East US 2
  • Środkowe stany USACentral US
  • Europa ZachodniaWest Europe
  • Zachodnie stany USA 2West US 2

Uwaga

Włączenie Strefy dostępności dla jednego regionu konta platformy Azure Cosmos spowoduje naliczenie opłat, które są równoznaczne z dodaniem dodatkowego regionu do konta.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. Aby uzyskać szczegółowe informacje o cenach, zobacz stronę z cennikiem oraz koszt dla wieloregionu w artykułach Azure Cosmos DB .For details on pricing, see the pricing page and the multi-region cost in Azure Cosmos DB articles.

Poniższa tabela zawiera podsumowanie możliwości wysokiej dostępności różnych konfiguracji konta:The following table summarizes the high availability capability of various account configurations:

KLUCZOWY WSKAŹNIK WYDAJNOŚCIKPI Pojedynczy region bez Strefy dostępności (nie AZ)Single region without Availability Zones (Non-AZ) Pojedynczy region z Strefy dostępności (AZ)Single region with Availability Zones (AZ) Zapisy w wielu regionach z Strefy dostępności (AZ, 2 regiony) — najbardziej zalecanym ustawieniemMulti-region writes with Availability Zones (AZ, 2 regions) – Most recommended setting
Umowa SLA dotycząca dostępności zapisuWrite availability SLA 99,99%99.99% 99,99%99.99% 99.999%99.999%
Umowa SLA dotycząca dostępności odczytuRead availability SLA 99,99%99.99% 99,99%99.99% 99.999%99.999%
CenaPrice Stawka rozliczenia w jednym regionieSingle region billing rate Stawka rozliczenia strefy dostępności pojedynczego regionuSingle region Availability Zone billing rate Wieloregionowa stawka rozliczeniowaMulti-region billing rate
Awarie stref — utrata danychZone failures – data loss Utrata danychData loss Brak utraty danychNo data loss Brak utraty danychNo data loss
Awarie stref — dostępnośćZone failures – availability Utrata dostępnościAvailability loss Brak utraty dostępnościNo availability loss Brak utraty dostępnościNo availability loss
Opóźnienie odczytuRead latency Między regionamiCross region Między regionamiCross region MałeLow
Opóźnienie zapisuWrite latency Między regionamiCross region Między regionamiCross region MałeLow
Awaria regionalna — utrata danychRegional outage – data loss Utrata danychData loss Utrata danychData loss Utrata danychData loss

W przypadku używania ograniczonej spójności nieodświeżonej z wieloma Master i więcej niż jednym regionem utrata danych jest ograniczona do granicy nieaktualnej konfiguracji skonfigurowanej na Twoim koncie.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.

Można uniknąć utraty danych podczas awarii regionalnej, konfigurując silną spójność z wieloma regionami.Data loss during regional outage can be avoided by configuring strong consistency with multiple regions. Ta opcja ma wpływ na dostępność i wydajność.This option comes with tradeoffs that impact availability and performance.
Awaria regionalna — dostępnośćRegional outage –availability Utrata dostępnościAvailability loss Utrata dostępnościAvailability loss Brak utraty dostępnościNo availability loss
PrzepływnośćThroughput X RU/s zainicjowana przepływnośćX RU/s provisioned throughput X RU/s zainicjowana przepływnośćX RU/s provisioned throughput przepustowość z obsługą jednostki RU/s2X RU/s provisioned throughput

Ten tryb konfiguracji wymaga dwukrotnej ilości przepływności w porównaniu do jednego regionu z Strefy dostępności, ponieważ istnieją dwa regiony.This configuration mode requires twice the amount of throughput when compared to a single region with Availability Zones because there are two regions.

Uwaga

Aby włączyć obsługę strefy dostępności dla konta usługi Azure Cosmos w wielu regionach, konto musi mieć włączone zapisywanie z wieloma wzorcami.To enable Availability Zone support for a multi region Azure Cosmos account, the account must have multi-master writes enabled.

Nadmiarowość strefy można włączyć podczas dodawania regionu do nowych lub istniejących kont usługi Azure Cosmos.You can enable zone redundancy when adding a region to new or existing Azure Cosmos accounts. Obecnie można włączyć nadmiarowość strefy tylko przy użyciu Azure Portal, programu PowerShell i szablonów Azure Resource Manager.Currently, you can only enable zone redundancy by using Azure portal, PowerShell and Azure Resource Manager templates. Aby włączyć nadmiarowość strefy na koncie usługi Azure Cosmos, należy ustawić isZoneRedundant true flagę na dla określonej lokalizacji.To enable zone redundancy on your Azure Cosmos account, you should set the isZoneRedundant flag to true for a specific location. Tę flagę można ustawić we właściwości Locations.You can set this flag within the locations property. Na przykład poniższy fragment kodu programu PowerShell umożliwia nadmiarowość strefy dla regionu "Azja Południowo-Wschodnia":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 } 
) 

Strefy dostępności można włączyć przy użyciu Azure Portal podczas tworzenia konta usługi Azure Cosmos.You can enable Availability Zones by using Azure portal when creating an Azure Cosmos account. Podczas tworzenia konta, upewnij się, że włączono geograficznąi wieloregionową zapis, i wybierz region, w którym strefy dostępności są obsługiwane:When you create an account, make sure to enable the Geo-redundancy, Multi-region Writes, and choose a region where Availability Zones are supported:

Włącz Strefy dostępności przy użyciu Azure Portal

Tworzenie aplikacji o wysokiej dostępnościBuilding highly available applications

  • Aby zapewnić wysoką dostępność i odczyt, skonfiguruj konto Cosmos tak, aby obejmowało co najmniej dwa regiony z regionami wielokrotnego zapisu.To ensure high write and read availability, configure your Cosmos account to span at least two regions with multiple-write regions. Ta konfiguracja zapewnia najwyższą dostępność, najniższy czas oczekiwania i najlepszą skalowalność dla operacji odczytu i zapisu, które są obsługiwane przez umowy SLA.This configuration will provide the highest availability, lowest latency, and best scalability for both reads and writes backed by SLAs. Aby dowiedzieć się więcej, zobacz jak skonfigurować konto Cosmos z wieloma regionami zapisu.To learn more, see how to configure your Cosmos account with multiple write-regions.

  • W przypadku kont Cosmos z wieloregionem, które są skonfigurowane w regionie jednokrotnego zapisu, należy włączyć funkcję automatycznego przełączania do trybu failover przy użyciu interfejsu wiersza polecenia platformy Azure lub Azure Portal.For multi-region Cosmos accounts that are configured with a single-write region, enable automatic-failover by using Azure CLI or Azure portal. Po włączeniu automatycznego trybu failover, gdy wystąpi awaria regionalna, Cosmos DB automatycznie przejdzie w tryb failover na koncie.After you enable automatic failover, whenever there is a regional disaster, Cosmos DB will automatically failover your account.

  • Nawet jeśli Twoje konto Cosmos ma wysoką dostępność, aplikacja może nie być prawidłowo zaprojektowana tak, aby pozostawała wysoce dostępna.Even if your Cosmos account is highly available, your application may not be correctly designed to remain highly available. Aby przetestować kompleksową wysoką dostępność aplikacji, należy okresowo wywoływać ręcznie tryb failover przy użyciu interfejsu wiersza polecenia platformy Azure lub Azure Portal, w ramach testowania aplikacji lub przechodzenia do odzyskiwania po awarii.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.

  • W całym globalnie rozproszonym środowisku bazy danych istnieje bezpośrednia relacja między poziomem spójności a trwałością danych w przypadku awarii całego regionu.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. Podczas opracowywania planu ciągłości biznesowej należy zrozumieć maksymalny akceptowalny czas, po upływie którego aplikacja zostanie w pełni odzyskana po zdarzeniu zakłócania.As you develop your business continuity plan, you need to understand the maximum acceptable time before the application fully recovers after a disruptive event. Czas wymagany do pełnego odzyskania aplikacji jest znany jako cel czasu odzyskiwania (RTO).The time required for an application to fully recover is known as recovery time objective (RTO). Należy również zrozumieć maksymalny okres ostatnich aktualizacji danych, które aplikacja może tolerować podczas odzyskiwania po wystąpieniu zdarzenia zakłócenia.You also need to understand the maximum period of recent data updates the application can tolerate losing when recovering after a disruptive event. Okres aktualizacji, którego utrata może być tolerowana, jest określany jako cel punktu odzyskiwania (RPO, recovery point objective).The time period of updates that you might afford to lose is known as recovery point objective (RPO). Aby zobaczyć cel punktu odzyskiwania i RTO dla Azure Cosmos DB, zobacz poziomy spójności i trwałość danychTo see the RPO and RTO for Azure Cosmos DB, see Consistency levels and data durability

Następne krokiNext steps

Następnie możesz zapoznać się z następującymi artykułami:Next you can read the following articles: