Um banco de dados distribuído globalmente quer transações que pareçam ter acontecido em uma única ordem, mas servidores em datacenters diferentes não compartilham um relógio e não conseguem concordar sobre qual escrita veio primeiro.

O Spanner resolve isso com o TrueTime: cada datacenter lê de receptores de GPS e relógios atômicos e informa um intervalo de tempo em vez de um instante único, de modo que a incerteza é explícita. Uma transação espera até que seu horário de commit esteja seguramente após o horário mais tardio possível de qualquer transação sobreposta e, então, faz o commit com esse carimbo de tempo em todas as réplicas.

O resultado é o primeiro sistema a oferecer transações distribuídas com consistência externa em escala global, permitindo que o Spanner forneça leituras não bloqueantes no passado, transações somente leitura sem bloqueio e alterações de esquema atômicas em todas as réplicas.

Tornar a medição do tempo confiável, não apenas rápida

O GPS e os relógios atômicos limitam a incerteza, então o tempo pode ser confiado

Esperar a incerteza se esgotar transforma um palpite em uma ordenação demonstrável

Um carimbo de tempo global dá a todas as réplicas o mesmo ponto de commit

Isso torna seguro executar leituras e alterações de esquema entre regiões em paralelo

Quando um sistema distribuído precisa de uma ordem total, mensagens engenhosas não bastam; torne o relógio compartilhado confiável para que a ordenação decorra de um tempo com o qual todos concordam.

O Spanner tornou-se a espinha dorsal dos serviços transacionais entre regiões do Google e mais tarde foi oferecido publicamente como Cloud Spanner. Sua abordagem TrueTime tornou-se um estudo de caso sobre o uso de relógios do mundo real para resolver a consistência distribuída.

CONFIRA AS EVIDÊNCIAS

As fontes

  1. Spanner: Google's Globally-Distributed Database Google Research · research.google
  2. Spanner: TrueTime and external consistency Google Cloud Documentation · cloud.google.com