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

下面我们来分析一下为什么说因果一致性是一种弱化的顺序一致性模型 。 顺序一致性虽然不保证事件发生的顺序跟实际发生的保持一致 , 但是它能够保证所有进程看到的读写操作顺序是一样的 。 而因果一致性更进一步弱化了顺序一致性中对读写操作顺序的约束 , 仅保证有因果关系的读写操作有序 , 没有因果关系的读写操作(并发事件)则不做保证 。 也就是说如果是无因果关系的数据操作不同进程看到的值是有可能是不一样 , 而有因果关系的数据操作不同进程看到的值保证是一样的 。

最终一致性(Eventual Consistency)

最终一致性是更加弱化的一致性模型 , 因果一致性起码还保证了有因果关系的数据不同进程读取到的值保证是一样的 , 而最终一致性只保证所有副本的数据最终在某个时刻会保持一致 。
从某种意义上讲 , 最终一致性保证的数据在某个时刻会最终保持一致就像是在说:“人总有一天会死”一样 。 实际上我们更加关心的是:

  1. “最终”到底是多久?通常来说 , 实际运行的系统需要能够保证提供一个有下限的时间范围 。

    推荐阅读