Una base de datos distribuida globalmente quiere transacciones que parezcan haber ocurrido en un solo orden, pero los servidores en distintos centros de datos no comparten un reloj y no pueden ponerse de acuerdo sobre qué escritura llegó primero.

Spanner lo resuelve con TrueTime: cada centro de datos lee de receptores GPS y relojes atómicos, y reporta un intervalo de tiempo en lugar de un instante único, de modo que la incertidumbre es explícita. Una transacción espera hasta que su tiempo de confirmación esté de forma segura después del último tiempo posible de cualquier transacción superpuesta, y luego se confirma con esa marca de tiempo en todas las réplicas.

El resultado es el primer sistema en ofrecer transacciones distribuidas con consistencia externa a escala global, permitiendo a Spanner proporcionar lecturas no bloqueantes en el pasado, transacciones de solo lectura sin bloqueos y cambios de esquema atómicos en todas las réplicas.

Hacer que la medición del tiempo sea confiable, no solo rápida

El GPS y los relojes atómicos acotan la incertidumbre, por lo que se puede confiar en el tiempo

Esperar a que pase la incertidumbre convierte una conjetura en un orden demostrable

Una marca de tiempo global da a todas las réplicas el mismo punto de confirmación

Hace que las lecturas entre regiones y los cambios de esquema sean seguros de ejecutar en paralelo

Cuando un sistema distribuido necesita un orden total, la mensajería ingeniosa no basta; hay que hacer confiable el reloj compartido para que el orden surja de un tiempo en el que todos coinciden.

Spanner se convirtió en la columna vertebral de los servicios transaccionales entre regiones de Google y más tarde se ofreció públicamente como Cloud Spanner. Su enfoque TrueTime se convirtió en un caso de estudio sobre el uso de relojes del mundo real para resolver la consistencia distribuida.

CONSULTA LAS PRUEBAS

Las fuentes

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