一个全球分布式数据库希望事务看起来像按某个顺序发生,但不同数据中心的服务并没有共享时钟,无法就哪个写入先发生达成一致。

Spanner通过TrueTime解决这个问题:每个数据中心从GPS接收器和原子钟读取时间,并报告一个时间间隔而不是单一时刻,从而显式地表示不确定性。一个事务会等待,直到其提交时间安全地晚于任何重叠事务的最新可能时间,然后用该时间戳提交到所有副本。

结果是第一个在全球范围内提供外部一致性的分布式事务的系统,让Spanner能够提供对过去的非阻塞读取、无锁的只读事务以及跨所有副本的原子模式更改。

让时间测量值得信赖,而不仅仅是快速

GPS和原子钟限定了不确定性,因此时间可以被信任

等待不确定性过去将猜测转化为可证明的排序

一个全局时间戳给所有副本提供了相同的提交点

它使得跨区域读取和模式更改可以安全地并行运行

当分布式系统需要全序时,巧妙的通信是不够的;让共享时钟值得信赖,排序就会从大家都同意的时间中自然产生。

Spanner成为谷歌跨区域事务服务的支柱,后来作为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