Content #
Spanner 采用的方案是 TrueTime。它的时间源是 GPS 和原子钟,所以属于多时间源和物理时钟,同时它也采用了多点授时机制,就是说集群内有多个时间服务器都可以提供授时服务。
TrueTime 是会出现时光倒流的。例如,A、B 两个进程先后调用 TrueTime 服务,各自拿到一个时间区间,如果在其中随机选择,则可能出现 B 的时间早于 A 的时间。不只是 TrueTime,任何物理时钟都会存在时钟偏移甚至回拨。
单个物理时钟会产生误差,而多点授时又会带来整体性的误差,那 TrueTime 为什么还要这么设计呢?
因为它也有两个显著的优势:
- 高可靠高性能,多时间源和多授时点实现了完全的去中心化设计,不存在单点;
- 支持全球化部署,客户端与时间服务器的距离也是可控的,不会因为两者通讯延迟过长导致时钟失效。