全球分散式資料庫希望交易看起來像是依單一順序發生,但位於不同資料中心的伺服器並不共用同一個時鐘,也無法就哪一筆寫入先發生達成共識。

Spanner 以 TrueTime 解決這個問題:每個資料中心都讀取 GPS 接收器與原子鐘,並回報一個時間區間,而非單一時間點,使不確定性明確可見。交易會等到其提交時間確定晚於任何重疊交易可能的最晚時間之後,才以該時間戳記向所有副本提交。

其成果是第一個在全球規模提供外部一致性分散式交易的系統,讓 Spanner 能提供不阻塞的過去時間讀取、無鎖的唯讀交易,以及跨所有副本的原子性結構描述變更。

讓時間量測值得信賴,而不只是快速

GPS 與原子鐘界定了不確定性的範圍,因此時間值得信賴

等待不確定性過去,能把猜測轉變為可證明的先後順序

單一全球時間戳記讓所有副本取得相同的提交點

這讓跨區域讀取與結構描述變更得以安全地並行執行

當分散式系統需要全序時,單靠巧妙的訊息傳遞並不足夠;要讓共用時鐘值得信賴,順序便能自然源自所有人一致認同的時間。

Spanner 成為 Google 跨區域交易服務的骨幹,後來並以 Cloud Spanner 之名對外公開提供。其 TrueTime 做法成為運用真實世界時鐘解決分散式一致性問題的經典案例。

追溯依據

參考來源

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