(1)什么是混合逻辑时钟

混合逻辑时钟即混合了物理时钟PT和逻辑时钟LC,实质上,是对逻辑时钟的增强。物理时钟是机器本地的时钟,由于系统对时间流逝的感知和度量会出现频率稍高或稍低的状况,因此系统时间会比标准时间稍快或稍慢,一天的误差可能有毫秒甚至秒级。
逻辑时钟是通过happened-before关系确定事件的逻辑时钟,从而确定事件的偏序关系。在分布式场景下,不同机器的时间可能存在不一致,没办法对跨节点的事件确定的先后关系。

(2)为什么需要混合逻辑时钟

在逻辑时钟下,如果a, b是位于一个进程内的顺序事件,且a发生于b之前,那么a happened-before b。 
如果a,b事件是位于2个进程内,a为消息的发送事件,b为同一个消息的接收事件,那么同样a happened-before b。
a happened-before b记作:a hb b或者a->b,C(a)<C(b),C表示逻辑时钟。 
但在实际中我们不能通过C(a)和C(b)的大小推出a, b事件发生的先后顺序。因为分布式节点间的交互要在事件发生顺序上达成一致, 而不是对于时间达成一致。如何让逻辑时钟和物理时钟达成一致?一种“尽可能”的方式即混合逻辑时钟存在很有必要。

(3)Hubble数据库硬核技术价值

Hubble混合逻辑时钟能实现:
1)满足逻辑时钟的因果一致性happened-before。
2)尽可能接近物理时钟PT,当物理时钟推进时,逻辑时钟部分被置零。
3)记录时间的因果关系,保证和物理时钟的偏差是bounded。
4)消除中心节点,用本地的物理时间加上逻辑时间,为具备数据库定义的因果关系的事务排序。
5)可以替代wall time使用。

分类: 硬核技术