Replicação

Nesta página, descrevemos como os dados são replicados no Cloud Spanner, os diferentes tipos de réplicas do Cloud Spanner e as funções deles em leituras e gravações, além dos benefícios da replicação.

Visão geral da replicação no Cloud Spanner

O Cloud Spanner recebe automaticamente a replicação no nível de bytes do sistema de arquivos distribuídos subjacente em que foi baseado, conforme descrito em Duração de leituras e gravações do Cloud Spanner. O Cloud Spanner grava as mutações do banco de dados em arquivos nesse sistema de arquivos, e este cuida da replicação e recuperação dos arquivos diante de uma falha da máquina ou do disco.

Ainda que o sistema de arquivos distribuído em que o Cloud Spanner é criado já ofereça a replicação no nível de byte, o Cloud Spanner também replica dados para proporcionar os benefícios adicionais de disponibilidade de dados e localidade geográfica. De modo geral, todos os dados no Cloud Spanner são organizados em linhas. O Cloud Spanner cria várias cópias, ou "réplicas", dessas linhas e as armazena em diferentes áreas geográficas. O Cloud Spanner usa um esquema de replicação síncrona baseado em Paxos, em que as réplicas de votação (explicadas em detalhes abaixo) recebem um voto a cada solicitação de gravação antes que seja feito o commit da gravação. Essa propriedade da replicação globalmente síncrona permite ler os dados mais atualizados de qualquer replica de leitura/gravação ou somente leitura do Cloud Spanner.

O Cloud Spanner cria réplicas de cada divisão do banco de dados para vincular os conceitos acima à terminologia e aos conceitos apresentados em Modelo de dados e esquema. Uma divisão é um conjunto de linhas contíguas em uma tabela de nível superior, onde as linhas são ordenadas pela chave primária. Todos os dados em uma divisão são armazenados fisicamente juntos na réplica, e o Cloud Spanner publica cada réplica de uma zona de falha independente.

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íder são responsáveis por processar gravações. Qualquer réplica de leitura/gravação ou somente leitura pode atender a uma solicitação de leitura sem se comunicar com a líder. Em alguns casos, se uma leitura forte é solicitada, a líder normalmente será consultada para garantir que a réplica somente leitura tenha recebido todas as mutações recentes. São discutidos abaixo mais detalhes sobre os papéis de réplicas de líderes e não líderes em leituras e gravações.

Benefícios da replicação do Cloud Spanner

Conforme mencionado acima, os benefícios da replicação do Cloud 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 Cloud Spanner ainda pode atender as gravações, mesmo que algumas réplicas não estejam disponíveis, porque apenas a maioria das réplicas de votação é necessária para confirmar uma gravação.

  • Localidade geográfica: com a capacidade de colocar dados em diferentes regiões e continentes com o Cloud Spanner, esses dados podem ficar geograficamente mais próximos dos usuários e serviços que necessitam deles. Portanto, o acesso fica mais rápido.

  • Experiência de banco de dados único: devido à replicação síncrona e à consistência forte global, o comportamento do Cloud Spanner é o mesmo em qualquer escala, proporcionando uma experiência de banco de dados único.

  • Desenvolvimento mais fácil de aplicativos: como as transações ACID do Cloud Spanner têm consistência forte global, os desenvolvedores não precisam inserir mais lógica nos aplicativos para lidar com a consistência eventual. Isso facilita e acelera o desenvolvimento e, posteriormente, a manutenção dos aplicativos.

Tipos de réplica

O Cloud Spanner tem três tipos de réplicas: de leitura/gravação, somente leitura e testemunha. As instâncias de região única usam apenas réplicas de leitura/gravação, e as configurações com instâncias multirregionais usam uma combinação dos três tipos. Para uma explicação detalhada sobre as razões para isso, consulte Por que réplicas somente leitura e testemunha? .

A tabela a seguir resume os tipos de réplicas do Cloud Spanner e as respectivas propriedades, e as seções abaixo descrevem cada tipo com mais detalhes.

Tipo de réplica Pode votar Pode se tornar líder Pode atender leituras
Leitura/gravação sim sim sim
Somente leitura não não sim
Testemunha sim não não

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 usado em instâncias de região única.

Somente leitura

As réplicas somente leitura permitem apenas leituras, e não permitem gravações. Essas réplicas não votam para líderes nem fazem a confirmação de gravações. Elas permitem que você dimensione a capacidade de leitura sem aumentar o tamanho do quórum necessário para gravações. Réplicas somente leitura:

  • são usadas somente em instâncias multirregionais;
  • mantêm uma cópia completa dos dados, que são replicados a partir de réplicas de leitura/gravação;
  • atendem a leituras;
  • não participam na votação sobre a necessidade de confirmar gravações. Portanto, o local das réplicas somente leitura nunca contribui para a latência da gravação;
  • normalmente, podem atender a leituras inativas sem a necessidade de ir e voltar à região líder padrão, supondo que a inatividade seja de, no mínimo, 15 segundos. As leituras fortes podem exigir a ida e a volta à réplica líder. Essa comunicação é processada automaticamente pelo sistema. Saiba mais sobre leituras inativas e fortes abaixo;
  • não estão qualificadas para se tornarem líderes.

Testemunha

As réplicas testemunhas não são compatíveis com leituras, mas participam da votação sobre a necessidade de fazer a confirmação das 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 somente em instâncias 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 na eleição da líder, mas não estão qualificadas para se tornarem líderes.

Papéis das réplicas em gravações e leituras

Nesta seção, descrevemos o papel das réplicas nas gravações e leituras do Cloud Spanner, o que é útil para entender por que o Cloud Spanner usa réplicas somente leitura e testemunhas em configurações multirregionais.

Em gravações

As solicitações de gravação de clientes sempre vão para a réplica líder primeiro, mesmo que haja uma réplica não líder que esteja mais próxima do cliente, ou se a réplica líder estiver geograficamente distante do cliente.

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. O commit da gravação é feito quando a maioria das réplicas da votação (ou "quórum de gravação") concorda sobre isso. 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. Saiba mais sobre esses modos de simultaneidade em 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 desatualizadas acessam a réplica de leitura/gravação ou somente leitura mais próxima disponível com o mesmo carimbo de data/hora da solicitação. É possível que isso aconteça com a réplica líder se ela for a mais próxima do cliente que emitiu a solicitação de leitura.

Esta página foi útil? Conte sua opinião sobre:

Enviar comentários sobre…

Documentação do Cloud Spanner