对分布式系统中各种一致性的理解

1. 四种一致性

  • Linearizability:跟时间相关,严格按照时间顺序
  • Sequential:跟时间无关,但要求所有操作在所有进程上被看到的顺序必须一致相同
  • Casual:跟时间无关,但要求有因果关系的操作在所有进程上被看到的顺序必须一致
  • PRAM:跟时间无关,但要求同一个进程中的多个写操作在所有进程上被看到的顺序必须一致,而不同进程上的写操作可以不一致。其忽略了读操作所带来的因果关系的要求

2. Linearizability和Sequential比较

Linearizability v.s. Sequential

  1. 图a是满足Sequential Consistency(顺序一致性),但是不满足Linearizability Consistency(线性一致性)。原因在于,从全局时钟的观点来看,P2进程对变量X的读操作在P1进程对变量X的写操作之后,然而读出来的却是旧的数据。但是这个图却是满足Sequential Consistency(顺序一致性)的,因为两个进程P1,P2的一致性并没有冲突。从这两个进程的角度来看,顺序应该是这样的:Write(y,2) , Read(x,0) , Write(x,4), Read(y,2),每个进程内部的读写顺序都是合理的,但是显然这个顺序与全局时钟下看到的顺序并不一样。
  2. 图b满足Linearizability Consistency(线性一致性),因为每个读操作都读到了该变量的最新写的结果,同时两个进程看到的操作顺序与全局时钟的顺序一样,都是Write(y,2) , Read(x,4) , Write(x,4), Read(y,2)。
  3. 图c不满足Sequential Consistency(顺序一致性),当然也就不满足Linearizability Consistency(线性一致性)。因为从进程P1的角度看,它对变量Y的读操作返回了结果0。那么就是说,P1进程的对变量Y的读操作在P2进程对变量Y的写操作之前,这意味着它认为的顺序是这样的:write(x,4) , Read(y,0) , Write(y,2), Read(x,0),显然这个顺序又是不能被满足的,因为最后一个对变量x的读操作读出来也是旧的数据。因此这个顺序是有冲突的,不满足顺序一致性。
  4. 两者的详细
    两者的详细比较

3. Casual、Sequential和PRAM比较

Casual v.s. Sequential v.s. PRAM

  1. 图a满足 Sequential Consistency(顺序一致性),因此也满足Casual Consistency(因果一致性),因为从这个系统中的四个进程的角度看,它们都有相同的顺序也有相同的因果关系。
  2. 图b满足Casual Consistency(因果一致性)但是不满足 Sequential Consistency(顺序一致性)。首先P1和P2的写是没有因果关系的,从P3看来,Read(x,7) 表示P2的 Write(x,7)一定在P3的Read(x,7)之前, P3的Read(x,2)表示P1的Write(x,2)一定在P3的Read(x,2)之前,又因为P3中Read(x,7) 在Read(x,2)之前(本地因果顺序),因此,从P3角度看P1和P2的执行顺序应该是:Write(x,7)、Write(x,2)、Write(x,4)。同样的分析方法,可以得出从P4角度看P1和P2的执行顺序应该是:Write(x,2)、Write(x,4)、Write(x,7)。由于P3和P4看到的执行顺序不一致,因此这不满足Sequential Consistency(顺序一致性)要求。
  3. 图c展示了比Casual Consistency(因果一致性)更弱的一种一致性模型: PRAM(Pipelined Random Access Memory)管道式存储器,是Lipton和Sandberg于1988年在学术报告”PRAM: A scalable shared memory”中提出。如前所述, Sequential Consistency(顺序一致性)要求所有进程看到的程序执行顺序必须一致,而Casual Consistency(因果一致性)降低了一致性要求,它要求有因果关系的操作在所有进程上看到必须一致,而PRAM Consistency进一步降低一致性要求。先看PRAM定义:“…Writes done by a single process are received by all other processes in the order in which they were issued, but writes from different processes may be seen in a different order by different processes.” 意即在PRAM中,不同进程可以看到不同的执行顺序,但在某一进程上的多个写操作,在所有进程上看到的顺序必须一致,而不同进程上的写操作在不同进程上看起来其执行顺序则可以不一致。图c展示的例子而言,从P4角度看,无法对P1和P2中的操作进行排序,从而得到P4中的视图,因此肯定不满足Casual Consistency。但如果不考虑P2中读操作带来的因果关系,P4依次看到了P2中的Write(x,7)和P1中的Write(x,2)和Write(x,4),其满足PRAM的要求

4. 参考文献

[1]Linearizability versus Serializability
[2]分布式系统一致性
[3]Consistency Models

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值