要区分授时机制也很简单,抓住三个要素就可以了:
- 时间源:单个还是多个使用的
- 时钟类型:物理时钟还是混合逻辑时钟
- 授时点:一个还是多个
TrueTime
它的时间源是 GPS 和原子钟,所以属于多时间源和物理时钟,同时它也采用了多点授时机制,就是说集群内有多个时间服务器都可以提供授时服务。
优势:不存在单点,支持全球化部署
劣势:会出现时光倒流
依赖于特定硬件设备
HLC
采用了物理时钟与逻辑时钟混合的方式,不同节点之间发生的事件没有依赖关系时,也会出现时间误差。
HLC 是一种松耦合的设计,所以不会去校正节点的本地时钟,本地时钟是否准确,还要靠 NTP 或类似的协议来保证。
从左到右,依次表示为:本地时间、L值、C值。
本地时间单调递增。
L取值:本地时间、上一事件L值、依赖事件的L值(如果有),三者取最大
C取值:L选取的那一个基础上的C+1
TSO
优点就是实现简便,如果能够保证时钟单调递增,还可以简化事务冲突时的设计。但缺点也很明显,集群不能大范围部署,同时性能也有上限。
STP
优缺点介于 HLC 和 TSO 之间。不依赖NTP协议。
- STP Server。多个 STP Server 构成 STP Server 组,组内根据协议进行选主,主节点被称为 Primary,对外提供服务。
- STP Client。按照固定的时间间隔,从 Primary Server 同步时间。
- 其他角色,都从本地的STP Node节点获取时间
此文章为6月Day7学习笔记,内容来源于极客时间《分布式数据库30讲》