分布式系统:一致性模型( 四 )

顺序一致性是 Lamport(1979)在解决多处理器系统共享存储器时首次提出来的 。 参考我之前写的文章《分布式系统:Lamport 逻辑时钟》 。 它的条件是:

  1. 任何一次读写操作都是按照某种特定的顺序 。

  2. 所有进程看到的读写操作顺序都保持一致 。

首先我们先来分析一下线性一致性和顺序一致性的相同点在哪里 。 他们都能够保证所有进程对数据的读写顺序保持一致 。 线性一致性的实现很简单 , 就按照全局时钟(可以简单理解为物理时钟)为参考系 , 所有进程都按照全局时钟的时间戳来区分事件的先后 , 那么必然所有进程看到的数据读写操作顺序一定是一样的 , 因为它们的参考系是一样的 。 而顺序一致性使用的是逻辑时钟来作为分布式系统中的全局时钟 , 进而所有进程也有了一个统一的参考系对读写操作进行排序 , 因此所有进程看到的数据读写操作顺序也是一样的 。

那么线性一致性和顺序一致性的区别在哪里呢?通过上面的分析可以发现 , 顺序一致性虽然通过逻辑时钟保证所有进程保持一致的读写操作顺序 , 但这些读写操作的顺序跟实际上发生的顺序并不一定一致 。 而线性一致性是严格保证跟实际发生的顺序一致的 。

推荐阅读