Nesta página, descrevemos como os dados são replicados no Spanner, os diferentes tipos de réplicas do Spanner e os papéis delas em leituras e gravações, além dos benefícios da replicação.
Visão geral
O Spanner faz a replicação automaticamente no nível de bytes. Conforme descrito em Duração de leituras e gravações do Spanner, ele aproveita essa capacidade no sistema de arquivos subjacente em que foi criado. O Spanner grava mutações de banco de dados em arquivos nesse sistema de arquivos, que cuida da replicação e recuperação dos arquivos quando uma máquina ou disco falha.
Embora o sistema de arquivos distribuído subjacente em que o Spanner é criado já forneça replicação no nível de byte, o Spanner também replica dados para fornecer os benefícios adicionais de disponibilidade de dados e localidade geográfica. Em um nível geral, todos os dados no Spanner são organizados em linhas. O Spanner cria várias cópias, ou réplicas, dessas linhas e as armazena em diferentes áreas geográficas. O Spanner usa um esquema de replicação síncrona baseada em Paxos, em que réplicas de votação votam em cada solicitação de gravação antes que ela seja confirmada. Essa propriedade da replicação globalmente síncrona permite ler os dados mais atualizados de qualquer réplica de leitura/gravação ou somente leitura do Spanner.
O Spanner cria réplicas de cada divisão do banco de dados. Uma divisão contém um intervalo de linhas contíguas, em que as linhas são ordenadas por chave primária. Todos os dados de uma divisão são armazenados fisicamente juntos na réplica, e o Spanner atende a cada réplica em uma zona de falha independente. Para mais informações, consulte a Visão geral dos esquemas.
Um conjunto de divisões é armazenado e replicado usando o Paxos. Dentro de cada conjunto de réplicas Paxos, uma réplica é eleita para atuar como líder. As réplicas líderes lidam com gravações, enquanto as réplicas de leitura/gravação ou somente leitura podem atender a uma solicitação de leitura sem se comunicar com o líder. Se uma leitura forte for solicitada, o líder geralmente será consultado para garantir que a réplica somente leitura tenha recebido todas as mutações recentes. Para monitorar a taxa de mudança e a quantidade de dados replicados da réplica principal para as réplicas entre regiões na configuração da instância, consulte Monitorar a replicação de dados.
Benefícios da replicação do Spanner
Os benefícios da replicação do Spanner incluem:
Disponibilidade dos dados: ter mais cópias de seus dados os torna mais disponíveis para clientes que farão a leitura deles. Além disso, o Spanner ainda pode atender gravações mesmo que algumas das réplicas estejam indisponíveis, porque apenas a maioria das réplicas de votação é necessária para confirmar uma gravação.
Localidade geográfica: com o Spanner, é possível colocar dados em diferentes regiões e continentes, o que significa que os dados podem estar geograficamente mais próximos e, portanto, mais rápidos de acessar, para os usuários e serviços que precisam deles.
Experiência de banco de dados único: o Spanner pode oferecer uma experiência de banco de dados único devido à replicação síncrona e à consistência forte global.
Desenvolvimento de aplicativos mais fácil: como o Spanner é compatível com ACID e oferece consistência global forte, os desenvolvedores que trabalham com ele não precisam adicionar lógica extra aos aplicativos para lidar com a consistência posterior. Isso torna o desenvolvimento e a manutenção de aplicativos mais rápidos e fáceis.
Tipos de réplica
O Spanner tem três tipos de réplicas: réplicas de leitura/gravação, réplicas somente leitura e réplicas de testemunha. As regiões e as topologias de replicação que formam as configurações de instância de base são fixas:
- As configurações básicas de instância de região única (regional) usam apenas réplicas de leitura/gravação.
- Configurações básicas de instâncias birregionais usam réplicas de leitura/gravação e testemunha.
- As configurações de instância multirregional de base usam uma combinação dos três tipos de réplica.
É possível criar configurações de instância personalizadas e adicionar outras réplicas somente leitura para configurações de instância regionais e multirregionais.
A tabela a seguir resume os tipos de réplicas do Spanner e suas propriedades:
| Tipo de réplica | Pode votar | Pode se tornar líder | Pode atender leituras | Pode configurar a réplica manualmente |
|---|---|---|---|---|
| Leitura/gravação | sim | sim | sim | não |
| Somente leitura | não | não | sim | sim* |
| Testemunha | sim | não | não | não |
* Para mais informações, consulte como criar uma instância com uma configuração de instância personalizada.
Réplicas de leitura/gravação
As réplicas de leitura/gravação permitem leituras e gravações. Elas:
- mantêm uma cópia completa dos dados;
- Atendem a leituras.
- Podem votar sobre a necessidade de fazer o commit de uma gravação.
- Participam de uma eleição de liderança.
- Estão qualificadas para se tornarem líderes.
- São o único tipo de réplica usado em instâncias regionais.
Réplicas somente leitura
As réplicas somente leitura oferecem suporte apenas a leituras, não a gravações. Essas réplicas não votam em líderes nem em gravações de commit. Assim, é possível dimensionar a capacidade de leitura sem aumentar o tamanho do quorum necessário para gravações. Réplicas somente leitura:
- Mantêm uma cópia completa dos dados, que é replicada da réplica de leitura/gravação principal.
- Não participam da votação sobre a necessidade de commits de gravações. Portanto, o local das réplicas somente leitura nunca contribui para a latência da gravação;
- Não se qualificam para se tornarem líderes.
- Atendem a leituras.
- Pode ser escalonado de forma assimétrica. Para mais informações, consulte Escalonamento automático de somente leitura assimétrica.
- Não funcionam como uma solução independente de recuperação de desastres (DR). A disponibilidade da instância é determinada pelo quorum de réplicas votantes. Se a instância do Spanner ficar off-line, as réplicas somente leitura também ficarão off-line logo depois e não poderão atender a leituras, incluindo leituras desatualizadas.
Se for a réplica mais próxima do seu aplicativo, a réplica somente leitura poderá geralmente atender a leituras desatualizadas sem precisar de uma ida e volta à região líder, supondo que a desatualização seja de pelo menos 15 segundos. Você também pode usar leituras direcionadas para encaminhar transações somente leitura e leituras únicas para um tipo de réplica específico ou uma região em uma configuração de instância multirregional. Para mais informações, consulte Leituras direcionadas.
As leituras consistentes podem exigir uma viagem de ida e volta à réplica principal. A ida e volta é apenas para negociar o carimbo de data/hora, não para enviar os dados reais do líder. A negociação de carimbo de data/hora é uma operação eficiente em termos de CPU no líder, e normalmente os dados já estão em trânsito. Essa comunicação é processada automaticamente pelo sistema.
Para mais informações sobre leituras obsoletas e consistentes, consulte a seção "Em leituras".
Réplicas somente leitura opcionais
É possível criar uma configuração de instância regional ou multirregional personalizada e adicionar réplicas somente leitura opcionais para escalonar leituras e oferecer suporte a leituras desatualizadas de baixa latência. A réplica somente leitura adicionada precisa estar em uma região que não faça parte da configuração predefinida da instância de base. Para conferir uma lista das regiões opcionais somente leitura que podem ser adicionadas, consulte a coluna "Região opcional" em Configurações regionais disponíveis e Configurações multirregionais disponíveis. Se você não encontrar o local escolhido para a réplica somente leitura, solicite uma nova região opcional para a réplica somente leitura.
Todas as réplicas somente leitura opcionais estão sujeitas a custos de capacidade de computação, armazenamento e replicação.Além disso, adicionar réplicas somente leitura a uma configuração de instância personalizada não muda os SLAs do Spanner (em inglês) da configuração de instância.
Se você optar por adicionar uma réplica somente leitura a um continente diferente da região líder, recomendamos adicionar pelo menos duas réplicas somente leitura. Isso ajuda a manter a baixa latência de leitura caso uma das réplicas somente leitura fique indisponível.
Como prática recomendada, teste as cargas de trabalho de desempenho em instâncias de não produção na
configuração de instância personalizada primeiro. Consulte o
painel de comparativo de mercado de latência e capacidade de processamento entre regiões
para ver dados de latência mediana entre regiões. Por exemplo, se você criar uma configuração de instância personalizada com a configuração básica multirregional eur6 e uma réplica opcional somente leitura em us-east1, a latência de leitura forte esperada para um cliente em us-east1 será de cerca de 100 milissegundos devido ao tempo de ida e volta para a região líder em europe-west4. Leituras desatualizadas com desatualização suficiente não
incorrem na viagem de ida e volta e, portanto, são muito mais rápidas. Você também pode usar os insights de bloqueio e de transação para identificar transações que causam altas latências.
Para instruções sobre como adicionar réplicas somente leitura opcionais, consulte Criar uma configuração de instância personalizada.
Réplicas testemunhas
As réplicas de testemunha não oferecem suporte a leituras, mas participam da votação para confirmar gravações. Essas réplicas facilitam o recebimento de quóruns para gravações sem os recursos de armazenamento e computação exigidos pelas réplicas de leitura/gravação para armazenar uma cópia completa dos dados e atender leituras. Réplicas testemunha:
- São usadas em instâncias birregionais e multirregionais.
- Não mantêm uma cópia completa dos dados.
- Não atendem a leituras.
- Votam se é necessário fazer o commit de gravações.
- Participam da eleição da líder, mas não estão qualificadas para se tornarem réplicas de líder.
A função das réplicas em gravações e leituras
Esta seção descreve a função das réplicas em gravações e leituras do Spanner, o que ajuda a entender por que o Spanner usa réplicas de testemunha em configurações birregionais e multirregionais.
Em gravações
As solicitações de gravação do cliente são sempre processadas primeiro na réplica líder, mesmo que haja uma réplica não líder mais próxima do cliente ou se a réplica líder estiver geograficamente distante dele. Se você usar uma configuração de instância birregional ou multirregional e o aplicativo cliente estiver localizado em uma região não líder, o Spanner vai usar o roteamento com reconhecimento de líder para rotear transações de leitura e gravação de forma dinâmica e reduzir a latência no banco de dados. Para mais informações, consulte Roteamento com reconhecimento de líder.
A réplica líder registra a gravação recebida e a encaminha, em paralelo, para as outras réplicas que estão qualificadas para votar naquela gravação. Cada réplica qualificada completa a respectiva gravação e, em seguida, responde de volta à líder com uma votação sobre a necessidade de fazer o commit da gravação. A gravação é confirmada quando a maioria das réplicas de votação (ou quórum de gravação) concorda em confirmar a gravação. Em segundo plano, todas as réplicas restantes (não testemunhas) registram a gravação. Se uma réplica de leitura/gravação ou somente leitura se atrasar no registro das gravações, ela poderá solicitar os dados ausentes de outra réplica que tenha uma cópia completa e atualizada dos dados.
Em leituras
As solicitações de leitura pelo cliente podem ser executadas na réplica líder ou exigir a comunicação com ela, dependendo do modo de simultaneidade da solicitação.
As leituras que fazem parte de uma transação de leitura e gravação são atendidas pela réplica líder, já que ela mantém os bloqueios exigidos para impor a capacidade de serialização.
Os métodos de leitura única (uma leitura fora do contexto de uma transação) e as leituras em transações somente leitura podem exigir a comunicação com a líder, dependendo do modo de simultaneidade da leitura. Para mais informações sobre modos de simultaneidade, consulte Tipos de leitura.
As solicitações de leitura forte podem acessar qualquer réplica de leitura e gravação ou somente leitura. Se a solicitação acessar uma réplica não líder, ela precisará se comunicar com a líder para executar a leitura.
As solicitações de leitura desatualizada vão para a réplica somente leitura ou de leitura/gravação mais próxima disponível que esteja atualizada com o carimbo de data/hora da solicitação. Essa pode ser a réplica líder se ela for a mais próxima do cliente que emitiu a solicitação de leitura.
Monitorar a replicação de dados
É possível monitorar a taxa de mudança e a quantidade de dados replicados da réplica líder para as réplicas entre regiões na configuração da instância. A taxa de mudança está em bytes por segundo, e a quantidade de dados está em bytes. Para fazer isso, use a métrica de monitoramento Bytes replicados entre regiões (instance/cross_region_replicated_bytes_count).
Para conferir essa métrica no console do Google Cloud , siga estas etapas:
No console do Google Cloud , acesse Monitoring:
No menu de navegação, selecione Metrics Explorer.
No campo Métrica, clique no menu suspenso Selecionar uma métrica.
No campo Filtrar por nome do recurso ou da métrica, selecione Instância do Cloud Spanner > Instância > Bytes replicados entre regiões e clique em Aplicar.
Essa métrica só está disponível em Métricas ativas se houver atividade de replicação entre regiões na sua instância. Caso contrário, ela vai aparecer em Métricas inativas. Por padrão, a UI filtra e mostra apenas métricas ativas. Desmarque a caixa de seleção Ativo para ver as métricas ativas e inativas.
O gráfico mostra a taxa de mudança (em bytes por segundo) dos dados replicados em todas as instâncias do Spanner no período especificado.
Opcional: para mostrar a quantidade de dados (em bytes) replicados em vez da taxa de alteração:
- No campo Agregação, clique no menu suspenso Soma e selecione Configurar alinhador.
- No campo Função de alinhamento, clique no menu suspenso Taxa e selecione Delta.
Selecione Tabela ou Ambos como o tipo de tabela em vez de "Gráfico".
A tabela mostra a quantidade de dados (em bytes) replicados no período especificado.
Opcional: para conferir o uso de uma instância ou atributo específico:
- Use o campo Filtro para adicionar filtros, como um ID de instância, ID de banco de dados, região de origem, região de destino ou uma tag.
- Clique em Adicionar filtro para incluir vários filtros.
Para conferir uma lista completa de métricas do Google Cloud , consulte métricas doGoogle Cloud .
A seguir
- Saiba mais sobre configurações de instância.
- Saiba como criar e gerenciar instâncias.
- Saiba como criar e gerenciar configurações de instância.
- Saiba mais sobre Google Cloud geografia e regiões.