算法的目的
在使用分布式数据库的时候,不同节点中数据的一致性一向是一个经典且难以解决的问题,而这个问题的根源是难以实现一个全局统一的时钟。下面就描述了这种问题的一种情况:
如上图所示:A,B,C 表示分布式系统中的三个数据库,纵轴表示时间。在 TA1 时刻 A 做出了更改 Key=Value1
,这次更改在 TC2 时刻传输到了 C;在 TB1 时刻 B 做出了更改 Key=Value2
,这次更改在 TC1 时刻传输到了 C。那么问题来了:C 数据库中的 Key
应该等于 Value1
还是 Value2
呢?
自然地,我们可以想到:Key
的取值应该和最新的更改保持一致。但是,由于很难实现一个所有节点都一致的全局时钟,所以不同节点各自的时钟实际上并不具有可比性,即 TA1 < TB1 也不能说明 B 对 Key
的更改是在 A 之后发生的。
接下来要介绍的向量时钟