分布式系统中的数据一致性问题33页PPT文档
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
因果一致性在实现时必须建立与维护依赖图,这里涉及 到语义上的以来,是相当困难的。
第五章 分布式系统中的数据一致性问题
● PRAM一致性:一个程序的写操作被其他进程以指定
的顺序见到,不同程序的写操作在不同程序看来次序可以不 同。
[例1] P1: W(x,1) …
P2: … R(x)1 W(x,2)
P3:
但是,打印结果只有6个数字、64种可能。其中,000000 和001001显然不可能。
应该承认所有合理的结果。例如,001011,表示执行的次 序为:
A=1 print(b,c) b=1 print(a,c) c=1
print(a,b)
第五章 分布式系统中的数据一致性问题
● 因果一致性:可能因果相关的写操作应对所有程序可
第五章 分布式系统中的数据一致性问题
[例2] P1: W(x,1) …
P2: … R(x)1 W(x,2)
P3:
…
R(x)1 R(x)2
P4:
…பைடு நூலகம்
R(x)2 R(x)1
违反了因果一致性。因为P2读出了x=1,所以P1和P2的两 个写操作顺序必定为W(x,1)在W(x,2)前。 P3的结果才 是正确的。
第五章 分布式系统中的数据一致性问题
§1.分布式系统中数据一致性存在的困 难
1.高度并行带来的问题
本机内多任务并行带来的困难 多机并行带来的困难 网络延迟不可预测
2.多副本带来的问题
系统中存在多个副本,数据的修改通常会在不同的副 本上进行
第五章 分布式系统中的数据一致性问题
3. 空间数据所存在的特殊困难 跨机图幅的接边问题 拓扑关系的全局动态改变与生成问题
P1:W(x,1) S1 W(y,2)S2
P2:
S1 R(x)1
P3:
s2 R(y)2
弱一致性的缺陷在于没有区分对 共享变量的修改与读取。所以同 步变量的访问即要确保本地写全 部完成(所有副本均已更新)还 要收集其它计算机的写操作信息。
第五章 分布式系统中的数据一致性问题
● 释放一致性:类似临界区,提供“获取”和“释放” 两类原子同步操作。强制:
程序在访问共享变量之前必须成功完成“获取”操作; 完成“释放”操作前,程序的访问操作必须结束; “获取”、“释放”应保证顺序一致性。 释放一致性与用信号量和P、V操作来保证临界区访问正 确性何其相似乃尔!
与此相对应,还可以有入口一致性。
第五章 分布式系统中的数据一致性问题
小结:
一致性模型可以分为两类:
对第二点,强制要求所有的同步访问开始前,已经开始的所有的写操 作必须完成,在更新共享数据后立即进行同步,将新值传遍所有副本;
第三点,保证在读共享数据之前,完成同步操作,以便可以读到最新 值。
做法:
任何程序编制时,在对共享数据写操作后都必须紧接着访问同步变量;
任何读共享数据操作前,访问同步变量。
例如:
不使用同步操作
严格:所有访问时间绝对顺序
最强
顺序:所有程序以相同顺序检测所有
共享访问事件
因果:所有程序以相同顺序检测所有
因果联系事件
PRAM:所有程序按预定次序到来自一 台机器的写操作,来自其他机
器的写操作顺序不必相同
使用同步操作 弱:同步完成后共享数据才保持一致 释放:离开临界区后共享数据才保持
一致 入口:进入临界区时共享数据保持一致
见并保持顺序一致。并发的写操作在不同计算机上看来可以 顺序不同。
[例1] 程序P1:W(x,1) … W(x,3)
P2: R(x)1 W(x,2)
P3: R(x)1 …
R(x)2 R(x)3
P4: R(x)1 …
R(x)3 R(x)2
符合因果一致性要求,但违反了顺序一致性。因为P3和P4见 到访问顺序不同。
第五章 分布式系统中的数据一致性问题
4. 分布式系统中数据一致性保证的不同模型
● 严格一致性:读出的数据始终为最近写入的数据
太严格!实现 难度极大!几 乎不可能!
读x
计算机A
计算机A
时刻T1
时刻T2
写x
计算机A
T2 〉T1,如果两 者非常接近,有 可能因为网络原 因读请求比写请 求晚到!
第五章 分布式系统中的数据一致性问题
● 顺序一致性:只要所有的程序都以一定的顺序运行
● 弱排序:弱排序只要求对共享数据结构的访问保证顺 序一致性。即:
对同步变量(可与信号量类比)的访问是顺序一致的; 在所有以前的写操作结束之前,不的访问同步变量; 在先前所有的同步变量访问完成以前,不得访问共享数 据。
第五章 分布式系统中的数据一致性问题
实现考虑:
为保证第一点,对同步变量的访问必须立即广播。在广播完成之前, 其他程序不的访问别的同步变量;
…
R(x)1 R(x)2
P4:
…
R(x)2 R(x)1
符合PRAM一致性的要求。
PRAM与顺序一致性的差别在于,后者虽然为确定语句
的顺序,但要求所有程序遵从共同的顺序;而前者则允许不 同程序见到的顺序可以不同。
第五章 分布式系统中的数据一致性问题
[例2] 在前面的例子中,结果001001是可以接受的。这时, 各程序看到的顺序:
(即所有程序的访问操作在别的程序看来都是一样的), 每个程序的操作都以程序规定的次序实现,结果都应该被 接受。
[例1] 程序P1:W(x,1)…
程序P2 :
…
R(x)0 R(x)1 …
或者两次都为1,都应该接受。
顺序一致性看似很“弱”,实际很强,对多副本一致
性有很强的要求,实际实现也是难以做到的。只能在单一 服务器上使用。
程序A a=1
Print(b,c)
程序B … a=1 …
程序C … a=1 …
…
Print(a,c)
Print(a,b)
…
…
C=1
b=1
…
…
这里只列出本程序感兴趣(与自己的打印有关)的语句执行次序
第五章 分布式系统中的数据一致性问题
PRAM一致性要求虽然较弱,但它要求程序的写操作必 须被其他程序看到(尽管他们的顺序可以不同)。实际上, 这样的要求有点过高,每一个程序只要能够看到与自己有关 的其他程序的写操作就可以了。
第五章 分布式系统中的数据一致性问题
[例2] 程序A
程序B
程序C
a=1;
b=1;
c=1;
print(b,c) print(a,c) print(a,b)
理论上有90个执行的次序。以a=1开头说明,共有5!=120 个顺序,但b=1不能在print(a,c)之后,因此一半是无效 的;同理程序C也如此,只剩下30个有效,共90个有效顺序。