Replicação

Esta página descreve como os dados são replicados no Spanner, os diferentes tipos de réplicas do Spanner e as respetivas funções nas leituras e escritas, bem como as vantagens da replicação.

Vista geral

O Spanner replica automaticamente ao nível do byte. Conforme descrito em Life of Spanner Reads and Writes, tira partido desta capacidade no sistema de ficheiros subjacente no qual é criado. O Spanner escreve mutações da base de dados em ficheiros neste sistema de ficheiros e o sistema de ficheiros encarrega-se de replicar e recuperar os ficheiros quando uma máquina ou um disco falha.

Embora o sistema de ficheiros distribuído subjacente no qual o Spanner se baseia já forneça replicação ao nível do byte, o Spanner também replica dados para oferecer as vantagens adicionais da disponibilidade de dados e da localidade geográfica. A um nível elevado, todos os dados no Spanner são organizados em linhas. O Spanner cria várias cópias, ou réplicas, destas linhas e, em seguida, armazena-as em diferentes áreas geográficas. O Spanner usa um esquema de replicação síncrono baseado em Paxos, no qual as réplicas de votação votam em cada pedido de escrita antes de a escrita ser confirmada. Esta propriedade de replicação globalmente síncrona permite-lhe ler os dados mais atualizados de qualquer réplica de leitura/escrita ou só de leitura do Spanner.

O Spanner cria réplicas de cada divisão da base de dados. Uma divisão contém um intervalo de linhas contíguas, em que as linhas são ordenadas pela chave primária. Todos os dados numa divisão são armazenados fisicamente em conjunto na réplica e o Spanner disponibiliza cada réplica a partir de uma zona de falha independente. Para mais informações, consulte a vista geral dos esquemas.

Um conjunto de divisões é armazenado e replicado através do Paxos. Em cada conjunto de réplicas do Paxos, uma réplica é eleita para atuar como líder. As réplicas principais processam as escritas, enquanto as réplicas de leitura/escrita ou só de leitura podem processar um pedido de leitura sem comunicar com a principal. Se for pedida uma leitura forte, o líder é normalmente consultado para garantir que a réplica só de leitura recebeu todas as mutações recentes. Para monitorizar a taxa de alteração e a quantidade de dados replicados da réplica principal para as réplicas entre regiões na configuração da instância, consulte o artigo Monitorizar a replicação de dados.

Vantagens da replicação do Spanner

As vantagens da replicação do Spanner incluem:

  • Disponibilidade dos dados: ter mais cópias dos seus dados torna-os mais disponíveis para os clientes que os querem ler. Além disso, o Spanner pode continuar a publicar escritas, mesmo que algumas das réplicas estejam indisponíveis, porque só é necessária uma maioria das réplicas de votação para confirmar uma escrita.

  • Localidade geográfica: a capacidade de colocar dados em diferentes regiões e continentes com o Spanner significa que os dados podem estar geograficamente mais próximos e, por isso, o acesso é mais rápido para os utilizadores e os serviços que precisam deles.

  • Experiência de base de dados única: o Spanner pode oferecer uma experiência de base de dados única devido à sua replicação síncrona e consistência forte global.

  • Desenvolvimento de aplicações mais fácil: uma vez que o Spanner está em conformidade com a norma ACID e oferece uma forte consistência global, os programadores que trabalham com o Spanner não têm de adicionar lógica adicional às respetivas aplicações para lidar com a consistência eventual, o que torna o desenvolvimento de aplicações e a manutenção subsequente mais rápidos e fáceis.

Tipos de réplicas

O Spanner tem três tipos de réplicas: réplicas de leitura/escrita, réplicas só de leitura e réplicas de testemunho. As regiões e as topologias de replicação que formam as configurações de instâncias base são fixas:

Pode criar configurações de instâncias personalizadas e adicionar réplicas só de leitura para configurações de instâncias regionais e de várias regiões.

A tabela seguinte resume os tipos de réplicas do Spanner e as respetivas propriedades:

Tipo de réplica Pode votar Pode tornar-se líder Pode publicar leituras Pode configurar a réplica manualmente
Leitura/escrita sim sim sim não
Só de leitura não não sim sim*
Testemunha sim não não não

* Para mais informações, veja como criar uma instância com uma configuração de instância personalizada.

Réplicas de leitura/escrita

As réplicas de leitura/escrita suportam leituras e escritas. Estas réplicas:

  • Manter uma cópia completa dos seus dados.
  • Apresentar leituras.
  • Pode votar se deve confirmar uma escrita.
  • Participar na eleição de liderança.
  • São elegíveis para se tornarem líderes.
  • São o único tipo de réplica usado em instâncias regionais.

Réplicas só de leitura

As réplicas só de leitura só suportam leituras, mas não escritas. Estas réplicas não votam em líderes nem na confirmação de escritas, pelo que lhe permitem dimensionar a capacidade de leitura sem aumentar o tamanho do quórum necessário para escritas. Réplicas só de leitura:

  • Manter uma cópia completa dos seus dados, que é replicada a partir da réplica de leitura/escrita principal.
  • Não participe na votação para confirmar escritas. Assim, a localização das réplicas só de leitura nunca contribui para a latência de escrita.
  • Não são elegíveis para se tornarem líderes.
  • Apresentar leituras.
  • Pode ser dimensionado de forma assimétrica. Para mais informações, consulte o artigo Dimensionamento automático assimétrico só de leitura.
  • Se for a réplica mais próxima da sua aplicação, a réplica só de leitura pode normalmente publicar leituras desatualizadas sem precisar de uma viagem de ida e volta à região principal, assumindo que a desatualização é de, pelo menos, 15 segundos. Também pode usar leituras direcionadas para encaminhar transações só de leitura e leituras únicas para um tipo de réplica específico ou uma região numa configuração de instância de várias regiões. Para mais informações, consulte o artigo Leituras dirigidas.

    As leituras fortes podem exigir uma viagem de ida e volta à réplica principal. A viagem de ida e volta destina-se apenas a negociar a data/hora, e não a enviar os dados reais do líder. A negociação da data/hora é uma operação eficiente da CPU no líder e, normalmente, os dados já estão em trânsito. Esta comunicação é processada automaticamente pelo sistema.

    Para mais informações sobre leituras desatualizadas e fortes, consulte a secção Em leituras.

Réplicas só de leitura opcionais

Pode criar uma configuração de instância regional ou multirregional personalizada e adicionar réplicas só de leitura opcionais para dimensionar as leituras e suportar leituras obsoletas de baixa latência. A réplica só de leitura adicionada tem de estar numa região que não faça parte da configuração da instância base predefinida. Para ver uma lista das regiões opcionais de leitura que pode adicionar, consulte a coluna Região opcional em Configurações disponíveis regionais e Configurações disponíveis em várias regiões. Se não vir a localização da réplica só de leitura escolhida, pode pedir uma nova região de réplica só de leitura opcional.

Todas as réplicas opcionais só de leitura estão sujeitas a custos de capacidade de computação, armazenamento e replicação.

Além disso, a adição de réplicas só de leitura a uma configuração de instância personalizada não altera os SLAs do Spanner da configuração de instância.

Se optar por adicionar uma réplica só de leitura a um continente que esteja num continente diferente da região principal, recomendamos que adicione, no mínimo, duas réplicas só de leitura. Isto ajuda a manter uma baixa latência de leitura caso uma das réplicas só de 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. Pode consultar o painel de controlo de referência de latência e débito entre regiões para ver os dados de latência entre regiões medianos. Por exemplo, se criar uma configuração de instância personalizada com a configuração base de várias regiões e uma réplica só de leitura opcional em us-east1, a latência de leitura forte esperada para um cliente em us-east1 é de cerca de 100 milissegundos devido ao tempo de ida e volta para a região principal em europe-west4.eur6 As leituras desatualizadas com desatualização suficiente não incorrem no tempo de ida e volta e, por isso, são muito mais rápidas. Também pode usar as estatísticas de bloqueio e as estatísticas de transações para identificar transações que originam latências elevadas.

Para ver instruções sobre como adicionar réplicas opcionais só de leitura, consulte o artigo Crie uma configuração de instância personalizada.

Réplicas de testemunhas

As réplicas de testemunhas não suportam leituras, mas participam na votação para confirmar as escritas. Estas réplicas facilitam a obtenção de quóruns para escritas sem os recursos de armazenamento e computação necessários pelas réplicas de leitura/escrita para armazenar uma cópia completa dos dados e publicar leituras. Réplicas de testemunhas:

  • São usadas em instâncias de duas regiões e multirregionais.
  • Não manter uma cópia completa dos dados.
  • Não publicar leituras.
  • Vote se quer confirmar as escritas.
  • Participar na eleição de líderes, mas não ser elegível para se tornar uma réplica de líder.

A função das réplicas nas escritas e leituras

Esta secção descreve a função das réplicas nas escritas e leituras do Spanner, o que é útil para compreender por que motivo o Spanner usa réplicas de testemunho em configurações de duas regiões e várias regiões.

Em escritas

Os pedidos de gravação do cliente são sempre processados primeiro na réplica principal, mesmo que exista uma réplica não principal mais próxima do cliente ou se a réplica principal estiver geograficamente distante do cliente. Se usar uma configuração de instância de região dupla ou multirregião e a sua aplicação cliente estiver localizada numa região não principal, o Spanner usa o encaminhamento com reconhecimento do líder para encaminhar transações de leitura/escrita dinamicamente para reduzir a latência na sua base de dados. Para mais informações, consulte o artigo Encaminhamento com reconhecimento do líder.

A réplica principal regista a gravação recebida e encaminha-a, em paralelo, para as outras réplicas elegíveis para votar nessa gravação. Cada réplica elegível conclui a respetiva gravação e, em seguida, responde ao líder com um voto sobre se a gravação deve ser confirmada. A gravação é confirmada quando a maioria das réplicas de votação (ou o quorum de gravação) concorda em confirmar a gravação. Em segundo plano, todas as réplicas restantes (não testemunhais) registam a gravação. Se uma réplica de leitura/escrita ou apenas de leitura atrasar o registo de escritas, pode pedir os dados em falta a outra réplica para ter uma cópia completa e atualizada dos dados.

Em leituras

Os pedidos de leitura do cliente podem ser executados ou exigir comunicação com a réplica principal, consoante o modo de simultaneidade do pedido de leitura.

  • As leituras que fazem parte de uma transação de leitura/escrita são publicadas a partir da réplica principal, porque a réplica principal mantém os bloqueios necessários para aplicar a serialização.

  • Os métodos de leitura única (uma leitura fora do contexto de uma transação) e as leituras em transações só de leitura podem exigir comunicação com o líder, consoante o modo de simultaneidade da leitura. Para mais informações sobre os modos de concorrência, consulte o artigo Tipos de leitura.

    • Os pedidos de leitura fortes podem ser enviados para qualquer réplica de leitura/escrita ou só de leitura. Se o pedido for para uma réplica não principal, essa réplica tem de comunicar com a réplica principal para executar a leitura.

    • Os pedidos de leitura desatualizados são encaminhados para a réplica de leitura/escrita ou só de leitura disponível mais próxima que esteja atualizada até à data/hora do pedido. Pode ser a réplica principal se for a réplica mais próxima do cliente que emitiu o pedido de leitura.

Monitorize a replicação de dados

Pode monitorizar a taxa de alteração e a quantidade de dados replicados da réplica principal para as réplicas entre regiões na configuração da instância. A taxa de alteração está em bytes por segundo e a quantidade de dados está em bytes. Para o fazer, use a métrica de monitorização Bytes replicados entre regiões (instance/cross_region_replicated_bytes_count).

Para ver esta métrica na Google Cloud consola, siga estes passos:

  1. Na Google Cloud consola, aceda a Monitorização:

    Aceder a Monitorização

  2. No menu de navegação, selecione Explorador de métricas.

  3. No campo Métrica, clique no menu pendente Selecionar uma métrica.

  4. 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, de seguida, clique em Aplicar.

    Esta métrica só está disponível em Métricas ativas se existir atividade de replicação entre regiões na sua instância. Caso contrário, aparece em Métricas inativas. Por predefinição, a IU filtra e mostra apenas métricas ativas. Desmarque a marca de verificação Ativo para ver as métricas ativas e inativas.

    O gráfico mostra a taxa de alteração (em bytes por segundo) dos dados replicados em todas as instâncias do Spanner no intervalo de tempo especificado.

  5. Opcional: para mostrar a quantidade de dados (em bytes) replicados em vez da taxa de alteração:

    1. No campo Agregação, clique no menu pendente Soma e selecione Configurar alinhador.
    2. No campo Função de alinhamento, clique no menu pendente Taxa e selecione Delta.
    3. Selecione Tabela ou Ambos como tipo de tabela em vez de Gráfico.

      A tabela mostra a quantidade de dados (em bytes) que foi replicada no intervalo de tempo especificado.

  6. Opcional: para ver a utilização de uma instância ou um atributo específico:

    1. Use o campo Filtrar para adicionar filtros, como um ID da instância, um ID da base de dados, uma região de origem, uma região de destino ou uma etiqueta.
    2. Clique em Adicionar filtro para adicionar vários filtros.

Para ver uma lista completa de Google Cloud métricas, consulte as Google Cloud métricas.

O que se segue?