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 dentro de contêineres do Cosmos particionado 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 é 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 de dados de baixa latência e dimensionamento de taxa de transferência de leitura/gravação entre regiões associadas à sua conta do Cosmos, tendo mais regiões (mais alto N) melhora 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 a 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 o 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 Azure Cosmos DB garante que seu banco de dados sempre está 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 o comportamento do Cosmos DB durante uma interrupção, dependendo da configuração de 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 de região de gravação): Durante uma interrupção da região de gravação, essas contas permanecerão altamente disponíveis para leituras.Multi-region accounts with a single-write region (write region outage): During a write region outage, these accounts will remain highly available for reads. No entanto, para gravações devem "habilitar o failover automático" no seu Cosmos conta para failover de região para outra região afetada.However, for writes you must “enable automatic failover” on your Cosmos account to failover the impacted region to another region. O failover ocorrerá na ordem de prioridade de região especificada por você.The failover will occur in the order of region priority you’ve specified. Quando a região afetada fique online novamente, os dados não replicados presentes na região de gravação afetados durante a interrupção são disponibilizados por meio de conflitos 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. Aplicativos podem ler os conflitos de feed, resolva os conflitos com base na lógica específica do aplicativo e gravar os dados atualizados de volta para o contêiner do Cosmos 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 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. É possível invocar um failover manual e configurar a região afetada como a região de gravação.You can invoke a manual failover and configure the impacted region as the write region. Novamente, você pode fazer um failover manual por meio CLI do Azure ou portal do Azure.Again you can do a manual failover by using Azure CLI or Azure portal. Não há nenhuma perda de dados ou disponibilidade antes, durante ou após o failover manual.There is no data or availability loss before, during or after the manual failover. O aplicativo continua sendo altamente disponível.Your application continues to be highly available.

  • Contas de várias regiões com uma região de gravação única (interrupção de região de leitura): Durante uma interrupção de região de leitura, essas contas permanecerão altamente disponíveis para leituras e gravações.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. 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. O SDKs do Cosmos DB irá redirecionar chamadas de leitura para a próxima região disponível na lista de regiões preferenciais.The 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 incluir novamente de uma região com falha, consistência de leitura em garantias continuam sendo cumpridas 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. É recomendável sempre definir pelo menos duas regiões (de preferência, pelo menos dois gravar regiões) 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 está permanentemente irrecuperável, não há nenhuma perda de dados se sua conta do Cosmos de várias regiões é configurada com o nível de consistência padrão de forte.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. No caso de uma região de gravação irrecuperáveis permanentemente, para as contas do Cosmos de várias regiões configuradas com a consistência de desatualização limitada, a janela potencial de perda de dados é restrita para a janela de desatualização (K ou T); por sessão, níveis de consistência de prefixo consistente e 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 para zonas de disponibilidadeAvailability Zone support

O Azure Cosmos DB é um serviço de banco de dados distribuído globalmente, vários mestres 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 para cruzar a resiliência de região, agora você pode habilitar redundância de zona ao selecionar uma região para associar ao seu 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 de zona de disponibilidade do Azure Cosmos DB garantirá que as réplicas são colocadas em várias zonas dentro de uma determinada região para fornecer alta disponibilidade e resiliência durante falhas de 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. Não há nenhuma alteração à 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 única zona, redundância de zona fornece a durabilidade de dados completo com RPO = 0 e a 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.

Redundância de zona é uma recurso suplementar para o replicação multimestre recurso.Zone redundancy is a supplemental capability to the multi-master replication feature. Redundância de zona sozinha não pode ser usada para obter 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, é recomendável para ter várias regiões de gravação, além de 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 as gravações de várias regiões para sua conta do Cosmos do Azure, você pode aceitar redundância de zona sem nenhum custo extra.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 para o suporte de 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 adicioná-lo 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 AsiáticoSoutheast Asia

Observação

Habilitando as zonas de disponibilidade para uma conta do Azure Cosmos de região única resultará em encargos que são 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 o página de preços e o custos de várias regiões no Azure Cosmos DB artigos.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 (Non-AZ)Single region without Availability Zones (Non-AZ) Única região com zonas de disponibilidade (AZ)Single region with Availability Zones (AZ) Grava de várias regiões com zonas de disponibilidade (2 regiões, AZ) – a configuração recomendada de maioriaMulti-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%
Leia o SLA 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 de 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 a regiãoCross region Entre a regiãoCross region BaixoLow
Latência de gravaçãoWrite latency Entre a regiãoCross region Entre a regiãoCross region BaixoLow
Interrupção regional – perda de dadosRegional outage – data loss Perda de dadosData loss Perda de dadosData loss Perda de dadosData loss

Quando uso limitado consistência de desatualização limitada com o mestre de múltiplos e mais de uma região, perda de dados é limitada para a desatualização limitada configurada na 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.

Perda de dados durante a interrupção regional pode ser evitada Configurando uma coerência forte em várias regiões.Data loss during regional outage can be avoided by configuring strong consistency with multiple regions. Essa opção é fornecido com as compensações que afetam o desempenho e disponibilidade.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
ProdutividadeThroughput Taxa de transferência provisionada de X RU/sX RU/s provisioned throughput Taxa de transferência provisionada de X RU/sX RU/s provisioned throughput 2 x taxa de transferência provisionada de RU/s2X RU/s provisioned throughput

Esse modo de configuração requer o dobro da taxa de transferência em comparação com 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.

Ao adicionar uma região a contas do Cosmos do Azure novas ou existentes, você pode habilitar redundância de zona.You can enable zone redundancy when adding a region to new or existing Azure Cosmos accounts. Atualmente, só é possível habilitar redundância de zona usando modelos do PowerShell ou Azure Resource Manager.Currently, you can only enable zone redundancy by using PowerShell or Azure Resource Manager templates. Para habilitar a redundância de zona em sua conta do Cosmos do Azure, você deve definir a isZoneRedundant sinalizador como true 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 locais.You can set this flag within the locations property. Por exemplo, o seguinte trecho do powershell permite a redundância de zona para a região de "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 } 
) 

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 fornece a mais alta disponibilidade, latência mais baixa, e melhor escalabilidade para as leituras e gravações com suporte 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, chamar periodicamente o failover manual por meio da CLI do Azure ou portal do Azure, como parte do seu teste de aplicativos ou a recuperação de desastres (DR) simulações.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 globalmente distribuído, há uma relação direta entre a durabilidade de dados e o nível de consistência 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: