Alta disponibilidade com o Azure Cosmos DBHigh availability with Azure Cosmos DB

O Azure Cosmos DB replica de forma transparente seus dados em todas as regiões do Azure associadas à sua conta do Cosmos.Azure Cosmos DB transparently replicates your data across all the Azure regions associated with your Cosmos account. O Cosmos DB utiliza várias camadas de redundância para seus dados, como mostra a imagem a seguir:Cosmos DB employs multiple layers of redundancy for your data as shown in the following image:

Particionamento físico

  • Os dados em contêineres Cosmos são particionados horizontalmente.The data within Cosmos containers is horizontally partitioned.

  • Dentro de cada região, toda partição é protegida por um conjunto de réplicas com todas as gravações replicadas e confirmadas permanentemente pela maioria das réplicas.Within each region, every partition is protected by a replica-set with all writes replicated and durably committed by a majority of replicas. As réplicas são distribuídas em até 10 a 20 domínios de falha.Replicas are distributed across as many as 10-20 fault domains.

  • Em todas as regiões, cada partição é replicada.Each partition across all the regions is replicated. Cada região contém todas as partições de dados de um contêiner do Cosmos e pode aceitar gravações e fornecer leituras.Each region contains all the data partitions of a Cosmos container and can accept writes and serve reads.

Se sua conta do cosmos for distribuída entre n regiões do Azure, haverá pelo menos n x 4 cópias de todos os seus dados.If your Cosmos account is distributed across N Azure regions, there will be at least N x 4 copies of all your data. Além de fornecer acesso a dados de baixa latência e aumentar a taxa de transferência de gravação/leitura entre as regiões associadas à sua conta do cosmos, ter mais regiões (mais altas N) melhora ainda mais a disponibilidade.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.

SLAs de disponibilidadeSLAs for availability

Como um banco de dados distribuído globalmente, o Cosmos DB fornece SLAs abrangentes que englobam a taxa de transferência, a latência no 99º percentil, a coerência e a alta disponibilidade.As a globally distributed database, Cosmos DB provides comprehensive SLAs that encompass throughput, latency at the 99th percentile, consistency, and high availability. A tabela abaixo mostra as garantias de alta disponibilidade fornecidas pelo Cosmos DB para contas de uma e várias regiões.The table below shows the guarantees for high availability provided by Cosmos DB for single and multi-region accounts. Para alta disponibilidade, sempre configure suas contas do cosmos para ter várias regiões de gravação.For high availability, always configure your Cosmos accounts to have multiple write regions.

Tipo de operaçãoOperation type Região únicaSingle region Várias regiões (gravações de região única)Multi-region (single region writes) Várias regiões (gravações de várias regiões)Multi-region (multi-region writes)
GravaçõesWrites 99,9999.99 99,9999.99 99,99999.999
LeiturasReads 99,9999.99 99,99999.999 99,99999.999

Observação

Na prática, a disponibilidade de gravação real para desatualização limitada, sessão, prefixo consistente e modelos de consistência eventual é significativamente maior do que os SLAs publicados.In practice, the actual write availability for bounded staleness, session, consistent prefix and eventual consistency models is significantly higher than the published SLAs. A disponibilidade de leitura real para todos os níveis de coerência é significativamente mais alta do que os SLAs publicados.The actual read availability for all consistency levels is significantly higher than the published SLAs.

Alta disponibilidade com Cosmos DB em caso de interrupções regionaisHigh availability with Cosmos DB in the event of regional outages

Interrupções regionais não são incomuns e o Azure Cosmos DB garante que seu banco de dados esteja sempre altamente disponível.Regional outages aren't uncommon, and Azure Cosmos DB makes sure your database is always highly available. Os detalhes a seguir capturam Cosmos DB comportamento durante uma interrupção, dependendo da configuração da sua conta do Cosmos:The following details capture Cosmos DB behavior during an outage, depending on your Cosmos account configuration:

  • Com o Cosmos DB, antes que uma operação de gravação seja confirmada para o cliente, os dados serão confirmados por um quorum de réplicas dentro da região que aceitará as operações de gravação.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.

  • Contas de várias regiões configuradas com várias regiões de gravação estarão altamente disponíveis para leituras e gravações.Multi-region accounts configured with multiple-write regions will be highly available for both writes and reads. Failovers regionais são instantâneos e não exigem nenhuma alteração do aplicativo.Regional failovers are instantaneous and don't require any changes from the application.

  • Contas de várias regiões com uma região de gravação única (interrupção da região de gravação):Multi-region accounts with a single-write region (write region outage):

    • Durante uma interrupção da região de gravação, essas contas permanecerão altamente disponíveis para leituras.During a write region outage, these accounts will remain highly available for reads. Para que as solicitações de gravação tenham sucesso, você deve ativar a opção habilitar failover automático em sua conta do Azure Cosmos.For the write requests to succeed, you must turn on the enable automatic failover option on your Azure Cosmos account. Habilitar essa opção fará failover da região afetada para outra região na ordem de prioridade de região que você especificou.Enabling this option will failover the impacted region to another region in the order of region priority you’ve specified.
    • Quando a região afetada anteriormente estiver novamente online, todos os dados de gravação que não foram replicados quando a região falharem serão disponibilizados por meio do feed de conflitos.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. Os aplicativos podem ler o feed de conflitos, resolver os conflitos com base na lógica específica do aplicativo e gravar os dados atualizados de volta no contêiner Cosmos do Azure, conforme apropriado.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.
    • Depois que a região de gravação anteriormente afetada se recupera, ela fica automaticamente disponível como uma região de leitura.Once the previously impacted write region recovers, it becomes automatically available as a read region. Você pode alternar de volta para a região recuperada como a região de gravação.You can switch back to the recovered region as the write region. Você pode alternar as regiões usando CLI do Azure ou portal do Azure.You can switch the regions by using Azure CLI or Azure portal. Não há perda de dados ou disponibilidade antes, durante ou depois que você alterna a região de gravação e seu aplicativo continua a ser altamente disponível.There is no data or availability loss before, during or after you switch the write region and your application continues to be highly available.
  • Contas de várias regiões com uma região de gravação única (interrupção da região de leitura):Multi-region accounts with a single-write region (read region outage):

    • Durante uma interrupção de região de leitura, essas contas permanecerão altamente disponíveis para leituras e gravações.During a read region outage, these accounts will remain highly available for reads and writes.
    • A região afetada será desconectada automaticamente da região de gravação e será marcada como offline.The impacted region is automatically disconnected from the write region and will be marked offline. Os SDKs de Azure Cosmos DB redirecionarão as chamadas de leitura para a próxima região disponível na lista de regiões preferenciais.The Azure Cosmos DB SDKs will redirect read calls to the next available region in the preferred region list.
    • Se nenhuma das regiões na lista de regiões preferenciais estiver disponível, as chamadas retornarão automaticamente à região de gravação atual.If none of the regions in the preferred region list is available, calls automatically fall back to the current write region.
    • Não é necessária nenhuma alteração no código do aplicativo para lidar com a interrupção da região de leitura.No changes are required in your application code to handle read region outage. Por fim, quando a região afetada ficar online novamente, a região de leitura afetada anteriormente será automaticamente sincronizada com a região de gravação atual e estará disponível novamente para fornecer solicitações de leitura.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.
    • Leituras subsequentes são redirecionadas para a região recuperada sem exigir nenhuma alteração ao código do aplicativo.Subsequent reads are redirected to the recovered region without requiring any changes to your application code. Durante o failover e a rejunção de uma região com falha anteriormente, as garantias de consistência de leitura continuam a ser respeitadas pelo Cosmos DB.During both failover and rejoining of a previously failed region, read consistency guarantees continue to be honored by Cosmos DB.
  • Contas de uma única região poderão perder disponibilidade após uma indisponibilidade regional.Single-region accounts may lose availability following a regional outage. É sempre recomendável configurar pelo menos duas regiões (preferencialmente, pelo menos duas regiões de gravação) com sua conta do cosmos para garantir a alta disponibilidade em todos os momentos.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.

  • Mesmo em um evento raro e infeliz quando a região do Azure for permanentemente irrecuperável, não haverá perda de dados se sua conta de Cosmos de várias regiões estiver configurada com o nível de consistência de alta segurançapadrão.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. No caso de uma região de gravação permanentemente irrecuperável, para as contas Cosmos de várias regiões configuradas com consistência de desatualização limitada, a janela potencial de perda de dados é restrita à janela de desatualização (K ou T); para os níveis de sessão, de prefixo consistente e de consistência eventual, a janela potencial de perda de dados é restrita a um máximo de cinco segundos.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.

Suporte à zona de disponibilidadeAvailability Zone support

O Azure Cosmos DB é um serviço de banco de dados de vários mestres distribuído globalmente que fornece alta disponibilidade e resiliência durante interrupções regionais.Azure Cosmos DB is a globally distributed, multi-master database service that provides high availability and resiliency during regional outages. Além da resiliência entre regiões, agora você pode habilitar a redundância de zona ao selecionar uma região para associar ao banco de dados Cosmos do Azure.In addition to cross region resiliency, you can now enable zone redundancy when selecting a region to associate with your Azure Cosmos database.

Com o suporte à zona de disponibilidade, Azure Cosmos DB garantirá que as réplicas sejam colocadas em várias zonas em uma determinada região para fornecer alta disponibilidade e resiliência durante falhas zonais.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. Não há nenhuma alteração na latência e outros SLAs nessa configuração.There are no changes to latency and other SLAs in this configuration. No caso de uma falha de zona única, a redundância de zona fornece durabilidade total de dados com RPO = 0 e disponibilidade com RTO = 0.In the event of a single zone failure, zone redundancy provides full data durability with RPO=0 and availability with RTO=0.

A redundância de zona é uma funcionalidade suplementar para o recurso de replicação de vários mestres .Zone redundancy is a supplemental capability to the multi-master replication feature. A redundância de zona sozinha não pode ser confiável para atingir a resiliência regional.Zone redundancy alone cannot be relied upon to achieve regional resiliency. Por exemplo, no caso de interrupções regionais ou acesso de baixa latência em todas as regiões, é aconselhável ter várias regiões de gravação além da redundância de 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.

Ao configurar gravações de várias regiões para sua conta do Azure Cosmos, você pode aceitar a redundância de zona sem custo adicional.When configuring multi-region writes for your Azure Cosmos account, you can opt into zone redundancy at no extra cost. Caso contrário, consulte a observação abaixo sobre os preços do suporte à redundância de zona.Otherwise, please see the note below regarding the pricing for zone redundancy support. Você pode habilitar a redundância de zona em uma região existente da sua conta do Azure Cosmos removendo a região e adicionando-a novamente com a redundância de zona habilitada.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.

Esse recurso está disponível nas seguintes regiões do Azure:This feature is available in following Azure regions:

  • Sul do Reino UnidoUK South
  • Sudeste da ÁsiaSoutheast Asia
  • East USEast US
  • Leste dos EUA 2East US 2
  • EUA CentralCentral US
  • Europa OcidentalWest Europe
  • Oeste dos EUA 2West US 2

Observação

A habilitação de Zonas de Disponibilidade para uma única conta do Azure Cosmos de região resultará em encargos equivalentes à adição de uma região adicional à sua conta.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. Para obter detalhes sobre preços, consulte a página de preços e o custo de várias regiões em artigos Azure Cosmos DB .For details on pricing, see the pricing page and the multi-region cost in Azure Cosmos DB articles.

A tabela a seguir resume a capacidade de alta disponibilidade de várias configurações de conta:The following table summarizes the high availability capability of various account configurations:

KPIKPI Região única sem Zonas de Disponibilidade (não AZ)Single region without Availability Zones (Non-AZ) Região única com Zonas de Disponibilidade (AZ)Single region with Availability Zones (AZ) Gravações de várias regiões com Zonas de Disponibilidade (AZ, 2 regiões) – configuração mais recomendadaMulti-region writes with Availability Zones (AZ, 2 regions) – Most recommended setting
SLA de disponibilidade de gravaçãoWrite availability SLA 99,99%99.99% 99,99%99.99% 99,999%99.999%
SLA de leitura de disponibilidadeRead availability SLA 99,99%99.99% 99,99%99.99% 99,999%99.999%
PreçoPrice Taxa de cobrança de região únicaSingle region billing rate Taxa de cobrança da zona de disponibilidade de região únicaSingle region Availability Zone billing rate Taxa de cobrança de várias regiõesMulti-region billing rate
Falhas de zona – perda de dadosZone failures – data loss Perda de dadosData loss Sem perda de dadosNo data loss Sem perda de dadosNo data loss
Falhas de zona – disponibilidadeZone failures – availability Perda de disponibilidadeAvailability loss Sem perda de disponibilidadeNo availability loss Sem perda de disponibilidadeNo availability loss
Latência de leituraRead latency Entre regiõesCross region Entre regiõesCross region BaixaLow
Latência de gravaçãoWrite latency Entre regiõesCross region Entre regiõesCross region BaixaLow
Interrupção regional – perda de dadosRegional outage – data loss Perda de dadosData loss Perda de dadosData loss Perda de dadosData loss

Ao usar a consistência de desatualização limitada com vários mestres e mais de uma região, a perda de dados é limitada à desatualização limitada configurada em sua conta.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.

A perda de dados durante a interrupção regional pode ser evitada com a configuração de uma forte consistência com várias regiões.Data loss during regional outage can be avoided by configuring strong consistency with multiple regions. Essa opção é obtida com compensações que afetam a disponibilidade e o desempenho.This option comes with tradeoffs that impact availability and performance.
Interrupção regional – disponibilidadeRegional outage –availability Perda de disponibilidadeAvailability loss Perda de disponibilidadeAvailability loss Sem perda de disponibilidadeNo availability loss
Taxa de transferênciaThroughput Taxa de transferência provisionada X RU/sX RU/s provisioned throughput Taxa de transferência provisionada X RU/sX RU/s provisioned throughput taxa de transferência provisionada de 2 RU/s2X RU/s provisioned throughput

Esse modo de configuração requer duas vezes a quantidade de taxa de transferência quando comparado a uma única região com Zonas de Disponibilidade porque há duas regiões.This configuration mode requires twice the amount of throughput when compared to a single region with Availability Zones because there are two regions.

Observação

Para habilitar o suporte à zona de disponibilidade para uma conta do Azure Cosmos de várias regiões, a conta deve ter gravações de vários mestres habilitadas.To enable Availability Zone support for a multi region Azure Cosmos account, the account must have multi-master writes enabled.

Você pode habilitar a redundância de zona ao adicionar uma região a contas novas ou existentes do Azure Cosmos.You can enable zone redundancy when adding a region to new or existing Azure Cosmos accounts. No momento, você só pode habilitar a redundância de zona usando modelos portal do Azure, PowerShell e Azure Resource Manager.Currently, you can only enable zone redundancy by using Azure portal, PowerShell and Azure Resource Manager templates. Para habilitar a redundância de zona em sua conta do Azure Cosmos, você deve isZoneRedundant definir o true sinalizador como para um local específico.To enable zone redundancy on your Azure Cosmos account, you should set the isZoneRedundant flag to true for a specific location. Você pode definir esse sinalizador dentro da propriedade Locations.You can set this flag within the locations property. Por exemplo, o seguinte trecho do PowerShell habilita a redundância de zona para a região "sudeste asiático":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 } 
) 

Você pode habilitar Zonas de Disponibilidade usando portal do Azure ao criar uma conta do Azure Cosmos.You can enable Availability Zones by using Azure portal when creating an Azure Cosmos account. Ao criar uma conta, certifique-se de habilitar a redundância geográfica, as gravações de várias regiõese escolher uma região onde zonas de disponibilidade têm suporte:When you create an account, make sure to enable the Geo-redundancy, Multi-region Writes, and choose a region where Availability Zones are supported:

Habilitar Zonas de Disponibilidade usando portal do Azure

Criando aplicativos altamente disponíveisBuilding highly available applications

  • Para garantir a alta disponibilidade de leitura e gravação, configure sua conta do Cosmos para abranger pelo menos duas regiões com várias regiões de gravação.To ensure high write and read availability, configure your Cosmos account to span at least two regions with multiple-write regions. Essa configuração fornecerá a mais alta disponibilidade, a menor latência e a melhor escalabilidade para leituras e gravações apoiadas por SLAs.This configuration will provide the highest availability, lowest latency, and best scalability for both reads and writes backed by SLAs. Para saber mais, confira como configurar sua conta do Cosmos com várias regiões de gravação.To learn more, see how to configure your Cosmos account with multiple write-regions.

  • Para contas do Cosmos de várias regiões configuradas com uma única região de gravação, habilite o failover automático usando a CLI do Azure ou o portal do Azure.For multi-region Cosmos accounts that are configured with a single-write region, enable automatic-failover by using Azure CLI or Azure portal. Depois de habilitar o failover automático, sempre que houver um desastre regional, o Cosmos DB fará o failover da sua conta automaticamente.After you enable automatic failover, whenever there is a regional disaster, Cosmos DB will automatically failover your account.

  • Mesmo se a conta do Cosmos estiver altamente disponível, seu aplicativo poderá não ser corretamente projetado para permanecer altamente disponível.Even if your Cosmos account is highly available, your application may not be correctly designed to remain highly available. Para testar a alta disponibilidade de ponta a ponta de seu aplicativo, invoque periodicamente o failover manual usando CLI do Azure ou portal do Azure, como parte de seus testes de aplicativo ou de recuperação de desastres (Dr).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.

  • Em um ambiente de banco de dados distribuído globalmente, há uma relação direta entre o nível de consistência e a durabilidade dos dados na presença de uma interrupção em toda a região.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. À medida que você vai desenvolvendo o plano de continuidade dos negócios, precisará saber qual é o tempo máximo aceitável antes que o aplicativo se recupere completamente após um evento de interrupção.As you develop your business continuity plan, you need to understand the maximum acceptable time before the application fully recovers after a disruptive event. O tempo necessário para o aplicativo se recuperar totalmente é conhecido como RTO (objetivo de tempo de recuperação).The time required for an application to fully recover is known as recovery time objective (RTO). Também é necessário saber o período máximo de atualizações de dados recentes que o aplicativo pode perder sem maiores problemas durante a recuperação após um evento de interrupção.You also need to understand the maximum period of recent data updates the application can tolerate losing when recovering after a disruptive event. O período de tempo de atualizações que você pode perder é conhecido como RPO (objetivo de ponto de recuperação).The time period of updates that you might afford to lose is known as recovery point objective (RPO). Para ver o RTO e o RPO do Azure Cosmos DB, confira Níveis de consistência e durabilidade dos dadosTo see the RPO and RTO for Azure Cosmos DB, see Consistency levels and data durability

Próximas etapasNext steps

Em seguida, você poderá ler os artigos a seguir:Next you can read the following articles: