Une base de données distribuée à l'échelle mondiale veut des transactions qui semblent s'être produites dans un seul ordre, mais les serveurs de différents centres de données ne partagent pas une horloge et ne peuvent pas s'accorder sur l'écriture qui est venue en premier.

Spanner résout ce problème avec TrueTime : chaque centre de données lit des récepteurs GPS et des horloges atomiques, et rapporte un intervalle de temps plutôt qu'un instant unique, de sorte que l'incertitude est explicite. Une transaction attend que son heure de validation soit sûrement postérieure à l'heure la plus tardive possible de toute transaction chevauchante, puis se valide avec cet horodatage sur tous les réplicas.

Le résultat est le premier système à offrir des transactions distribuées cohérentes de façon externe à l'échelle mondiale, permettant à Spanner de fournir des lectures non bloquantes dans le passé, des transactions en lecture seule sans verrou et des modifications de schéma atomiques sur tous les réplicas.

Rendre la mesure du temps fiable, et pas seulement rapide

Le GPS et les horloges atomiques bornent l'incertitude, de sorte que le temps peut être digne de confiance

Attendre que l'incertitude se résorbe transforme une supposition en un ordre démontrable

Un horodatage mondial unique donne à tous les réplicas le même point de validation

Cela rend sûres à exécuter en parallèle les lectures et les modifications de schéma entre régions

Lorsqu'un système distribué a besoin d'un ordre total, une messagerie astucieuse ne suffit pas ; il faut rendre l'horloge partagée digne de confiance afin que l'ordre découle d'un temps sur lequel tous s'accordent.

Spanner est devenu l'épine dorsale des services transactionnels interrégionaux de Google et a ensuite été proposé publiquement sous le nom de Cloud Spanner. Son approche TrueTime est devenue une étude de cas sur l'utilisation d'horloges du monde réel pour résoudre la cohérence distribuée.

VÉRIFIEZ LES SOURCES

Les sources

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