分布式中的一致性模型

来源:互联网 发布:大连网络买花花店 编辑:程序博客网 时间:2024/06/05 15:20

分布式中的一致性模型
进行数据复制主要出于两个目的:可靠性和性能。数据一旦被复制,就会带来一致性的问题。
 
以数据为中心的一致性模型
1.严格一致性(strict consistency)
对于数据项x的任何读操作将返回最近一次对x进行写操作的结果所对应的值。
严格一致性是限制性最强的模型,但是在分布式系统中实现这种模型代价太大,所以在实际系统中运用有限。
 
2.顺序一致性
任何执行结果都是相同的,就好像所有进程对数据存储的读、写操作是按某种序列顺序执行的,并且每个进程的操作按照程序所制定的顺序出现在这个序列中。
也就是说,任何读、写操作的交叉都是可接受的,但是所有进程都看到相同的操作交叉。顺序一致性由Lamport(1979)在解决多处理器系统的共享存储器时首次提出的。
 
3.因果一致性
所有进程必须以相同的顺序看到具有潜在因果关系的写操作。不同机器上的进程可以以不同的顺序看到并发的写操作(Hutto和Ahamad 1990)。
假设P1和P2是有因果关系的两个进程,例如P2的写操作信赖于P1的写操作,那么P1和P2对x的修改顺序,在P3和P4看来一定是一样的。但如果P1和P2没有关系,那么P1和P2对x的修改顺序,在P3和P4看来可以是不一样的。
 

下表列出一些一致性模型,以限制性逐渐降低的顺序排列。

一致性

描述

严格

所有共享访问按绝对时间排序

线性化

所有进程以相同的顺序看到所有的共享访问。而且,访问是根据(非唯一的)全局时间戮排序的 

顺序

所有进程以相同顺序看到所有的共享访问。访问不是按时间排序的

因果

所有的进程以相同的顺序看到困果相关的共享访问

FIFO

所有进程以不同的进程提出写操作的顺序相互看到写操作。来自不同的进程的写操作可以不必总是以同样的顺序出现

 

另一种不同的方式是引入显式的同步变量,下表是这样的一致性模型的总结。

一致性

描述

只有在执行一次同步后,共享数据才被认为是一致的

释放

退出临界区时,使共享数据成为一致

入口

进入临界区时,使属于一个临界区的共享数据成为一致

 


 
以客户为中心的一致性模型
1.最终一致性
最终一致性指的是在一段时间内没有数据更新操作的话,那么所有的副本将逐渐成为一致的。例如OpenStack Swift就是采用这种模型。以一次写多次读的情况下,这种模型可以工作得比较好。
 
2.单调读
如果一个进程读取数据项x的值,那么该进程对x执行的任何后续读操作将总是得到第一次读取的那个值或更新的值
 
3.单调写
一个进程对数据x执行的写操作必须在该进程对x执行任何后续写操作之前完成。
 
4.写后读
一个进程对数据x执行一次写操作的结果总是会被该进程对x执行的后续读操作看见。
 
5.读后写
同一个进程对数据项x执行的读操作之后的写操作,保证发生在与x读取值相同或比之更新的值上。

0 0
原创粉丝点击