关系数据库/分布式系统一致性模型

一致性是一个比较抽象的概念,涉及computer science的多个领域,例如:

  1. 分布式数据存储(例如分布式数据库/分布式文件系统/消息队列)的读写一致性
  2. 传统关系数据库事务隔离级别,并发事务的一致性模型
  3. 共享内存的多核架构中,多个cpu core之间的缓存一致性(cache coherence)
  4. Web cache集群的数据一致性

 

 

  • 图右半部分,是关系数据库的consistency model。从上到下,一致性的级别越来越低,并发性能会更好些。不同数据库对于事务隔离级别的定义有所不同。
    • RR(repeatable read)
    • > CS(cursor scability)
    • > RC( read commit)。
  • 图左半部分,是从分布式系统的consistency model。WFR是write follows read, MR MW分别是monotonic read,monotonic write。
    • Linearizable(线性)
    • > Sequential(顺序)
    • > Causal(因果)
    • > RyW(read your write)。
  • 根据CAP理论,图中红色部分的一致性模型,无法满足100%的可用性,只能达到CP

 

Sequential consistency: Java内存模型 

Causal consistency(因果一致性)

如果Process A通知Process B它已经更新了数据,那么Process B的后续读取操作则读取A写入的最新值,而与A没有因果关系的C则可以最终一致性。

Read-your-writes consistency

如果Process A写入了最新的值,那么Process A的后续操作都会读取到最新值。但是其它用户可能要过一会才可以看到。

Session consistency

此种一致性要求客户端和存储系统交互的整个会话阶段保证

Read-your-writes consistency

Hibernate的session提供的一致性保证就属于此种一致性。

Monotonic read consistency

此种一致性要求如果Process A已经读取了对象的某个值,那么后续操作将不会读取到更早的值。

Monotonic write consistency

此种一致性保证系统会序列化执行一个Process中的所有写操作

 

二、ZooKeeper的保证(Consistency Guarantees

ZooKeeper是一个高效的、可扩展的服务,read和write操作都被设计为快速的,read比write操作更快。

1、顺序一致性(Sequential Consistency):从一个客户端来的更新请求会被顺序执行。

2、原子性(Atomicity):更新要么成功要么失败,没有部分成功的情况。

3、唯一的系统镜像(Single System Image):无论客户端连接到哪个Server,看到系统镜像是一致的。

4、可靠性(Reliability):更新一旦有效,持续有效,直到被覆盖。

5、时间线(Timeliness):保证在一定的时间内各个客户端看到的系统信息是一致的。

 

 

出处
posted @ 2018-05-17 11:33 等风来。。 Views(...) Comments(...) Edit 收藏
------------------------------------------------------------------------------------------------------------ --------------- 欢迎联系 x.guan.ling@gmail.com--------------- ------------------------------------------------------------------------------------------------------------