分布式系统中的数据同步
许多人在日常工作中都会用到分布式系统,它的好处就是它所提供的稳定性,容错性以及伸缩性
使我们能更容易地构建出稳定,高效的应用。
然而分布式系统的使用非常具有挑战性,包括数据同步以及理解冲突的意义。
分布式系统中的数据同步本身就是一项非常巨大的挑战。
如果光看物理时间戳的话我们无法确定哪个版本的数据才是最新的,
因为你无法确保所有的实体的物理时钟都是完美同步的。
比如说,两台同步的服务器将时间戳写入到同一个系统中。
如果一台服务器慢了哪怕只有几毫秒,很快它就无法得知事件的真实顺序了。
为了解决这一问题,我们可以采用基于事件的逻辑时钟而不是真实时间来构建出部分有序的集合。
你可以认为逻辑时钟就是标明系统中的事件的版本的一种方式。
通过查看这些有序的集合,我们就能同步系统中的数据,
因为我们可以知道哪些数据是最新的,并且可以识别出哪些事件是并发的。
我承认当我第一次听说“向量时钟”或者”Lamport时间戳”这个概念时,
我发现它们其实是一些我无法理解的荒唐的数学算法。或许更重要的是,
出于恐惧,我在逃避去学习它们。所幸的是,我发现它们其实要比我想像的简单得多。
我们来一窥它底层的奥秘并看看它是如何工作的。