收藏 分享(赏)

分布式一致性协议.ppt

上传人:kpmy5893 文档编号:8086254 上传时间:2019-06-08 格式:PPT 页数:39 大小:154KB
下载 相关 举报
分布式一致性协议.ppt_第1页
第1页 / 共39页
分布式一致性协议.ppt_第2页
第2页 / 共39页
分布式一致性协议.ppt_第3页
第3页 / 共39页
分布式一致性协议.ppt_第4页
第4页 / 共39页
分布式一致性协议.ppt_第5页
第5页 / 共39页
点击查看更多>>
资源描述

1、一致性协议,2010.05.19,主要内容,持续一致性 基于主备份的协议 复制的写协议 高速缓存相关性协议 实现以客户为中心的一致性,0. 预备知识,7.4.3.1 状态和操作 P219复制管理中实际传播的三个可能信息: 1).只传播更新的通知(无效化协议,几乎不占用带宽)适用于更新和写操作相对较多,即R/W相对很小的情况。 2).把数据从一个副本传送到另外的一个副本R/W较高的情况 3).把更新操作传播到其他的副本(主动复制)每个进程主动地联系最新的数据,7.4.3.2 拉协议与推协议 P220更新的方式: 1.基于推式的方法(基于服务器的协议)不需要其他的副本请求更新,这些更新就被传播到那

2、些副本那里应用于多个副本需要维持相对较高程度的一致性。主要是读操作,R/W较高。 2.基于拉式的方法(基于客户的协议)通常被应用于客户高速缓存。客户轮询服务器以查看是否需要更新。R/W较低 3.基于租用的更新传播(推的数据超期无效之后,采用拉式),1. 持续的一致性,对复制数据问题没有最好的解决办法。复制数据会导致一致性问题,这用一般方法不能有效地解决。除非放宽对一致性的限制才有希望获得有效的解决办法。(Yu 和 Vahdat 2002)给出了一种通用的办法,为定义不一致性区分了三个相互独立的坐标轴:副本之间的数值偏差、副本之间新旧程度的偏差以及更新操作顺序的偏差。他们称这些偏差形成了持续一致

3、性的范围。,1.1 限定复制的数值偏差,数据具有数值语义的应用程序可以用数值偏差来度量不一致性。如股票市场价格记录的复制。,如何把数值偏差限定在一定的范围之内?,单个数据项x的写数据操作,W(x) :对数据项x的写操作,weight(W(x) :用于更新x的数值,假定weight(W)0,开始时,写操作被提交给N个可用副本中的一个,即写操作的源。然后将已提交的写操作传播给所有的服务器。最后,每个服务器保存一个写操作日志,记录服务器在本地副本x上执行的写操作。,TWi,j表示的是源自Sj提交给Si的中的总的写操作,如何把数值偏差限定在一定的范围之内?,Goal:对任意时间t,使得服务器Si的当前

4、值vi在数据项x的实际值v(t)的一定范围内发生偏差。(该实际值完全由所已提交的写操作来确定。),对每个服务器Si,指定一个上限 ,这样就需要确保:,1,2,N,i,t,1,1,2,2,i,i,N,N,:Vi,1,1,i,i,2,2,N,N,V(t),(提交,本地执行),(传播给Si),注:wight(W)0,表明每次更新的值都是增加的。,传播给其他的服务器(感染协议),在任何情况下,服务器Si把来自Sj的一个写操作传播给Sk时,Sk可以知道写操作发送时的值TWi,j。换句话说,Sk可以维护一个视图TWki,j,它相信Si会有一个TWi,j。,j,i,k,TWj,j,TWi,j,TWki,j

5、TWk,j,t0,t1,当服务器Sk知道Si与提交给Sk的更新操作步调不一致时,它就把写操作从其日志中转发给Si。,该转发操作可以有效地把Sk的视图TWki,k往TWi,k靠近,使其偏差更小。尤其当应用程序提交一个新的写操作时,Sk会把其视图往TWi,k推进,这使得,?,1.2 限定复制的新旧程度偏差,让服务器Sk保持一个实时的向量时钟RVCk,其中表示:到时间T(i)时,Sk看到了已提交给Si的所有写操作。假定:每个已提交的W由其origin(W)添加时间戳,T(i)表示的是Si的本地时间。,如果副本服务器之间的时钟是松散同步化的,那么一个可接受的限定新旧程度的协议是这样的:只要服务器Sk通

6、知将超出指定的界限,那么它就开始拉入来自Si的时间戳晚于RVCki的写操作。,1.3 限定顺序偏差,顺序偏差产生的原因:副本服务器会暂时地应用已提交给它的更新因此,每个服务器都有一个暂时写操作的本地队列,这些写操作应用到x的本地副本中的顺序还需确定。通过指定暂时写操作队列的最大长度,就可以限定顺序偏差。当本地队列的长度超过指定的最大长度时,服务器不再接受任何新提交的操作,而是按照应执行的写操作的顺序,通过与其他服务器协商,尝试提交暂时写操作。换句话说,就是需要执行一个暂时写操作的全局一致性的顺序。,2. 基于主备份的协议,在顺序一致性中,基于主备份的协议比较盛行。在这些协议中,数据存储中的每个

7、数据项有一个相关的主备份,该备份负责协调在x上的写操作。根据1).主备份时候固定在一个远程的服务器上2).主备份移到启动写操作的进程那里之后写操作时候可以在本地执行来区分各种基于主备份的协议。,2.1 远程写协议,(最简单的协议):把所有的读写操作都转发给固定的远程服务器。工作原理: Goal:在数据项x上执行一个写操作Steps: 1.把W(x)转发给x的主服务器 2.在x的主服务器上执行本地更新 3.把x上的更新操作转发给备份服务器 4.每个备份服务器执行更新操作 5.备份服务器往主服务器返回一个完成的确认消息 6.主服务器回送一个确认信息给初始进程,备份服务器,数据项x的主服务器,客户,

8、客户,数据存储,W1,W5,W4,W3,W4,W3,W2,W3,W4,R1,R2,W1:写请求 W2:把写请求转发给主服务器 W3:通知备份服务器更新 W4:确定更新 W5:确定写操作已完成,R1:读请求 R2:读请求响应,运行初始进程,【潜在的性能问题】启动更新的进程在被允许继续执行之前,可能需要等待很长的时间。 【分析】阻塞操作。【改进】采用非阻塞的方法。只要主服务器已经更新了其x的本地副本,它就给初始进程返回确定消息。然后,它再通知备份服务器也执行这个更新。 【新的问题】容错能力。客户端进程无法确定其他的备份服务器执行了更新操作。,2.2 本地的写协议,基于主备份的本地写协议有两种: 1

9、).每个数据项x都只有一个单一的拷贝。也就是说不存在副本.,备份服务器,数据项x的 旧主服务器,客户,数据存储,3,2,1,4,数据项x的 新主服务器,1.读请求或写请求;2.向x的当前服务器发转发请求;3.将数据项x移动到客户的服务器上;4.返回在客户的服务器上执行的操作的结果。,【问题】需要跟踪每个数据项的当前位置,2).主备份要在多个要执行写操作的进程之间迁移,每当一个进程要更新数据项x时,它先定位x的主备份,然后将该备份移动到自己的位置。【优点】多个相继的写操作可以在本地执行,而执行读操作的进程仍然可以访问它的本地备份。但是如上所述,只有使用非阻塞协议,即在主备份接收到更新后,通过该协

10、议将更新传播到其他副本时,才可能实现这个优点。这个协议已经被应用于各种分布式共享存储器系统。,备份服务器,数据项x的 旧主服务器,客户,客户,数据存储,R1,R2,W5,W4,W2,W5,W4,W1,W3,W1:写请求 W2:把数据项x移到新主服务器上 W3:确定操作已经完成 W4:通知备份服务器更新 W5:确定更新,R1:读请求 R2:读请求响应,W5,W4,数据项x的 新主服务器,【注】两本书都存在错误。,3. 复制的写协议,3.1 主动复制,在主动复制中,每个副本都有一个相关联的进程,该进程执行更新操作。与其他的协议相比,更新通常是通过引起更新的写操作来传播的。也就是说,该操作被发送到每

11、个副本。,【问题1】操作需要在各地以相同的顺序来执行。因而需要一个全序的多播机制。【解决办法1】Lamport时间戳。但是用于大型分布式系统时的扩展性不好。【解决办法2】使用中心协调器(定序器 sequencer)来实现全序。将所有的操作转发到定序器,由定序器为每个操作分配一个唯一的序列号。(可扩展性问题依然存在)【解决办法3】结合1和2。(Rodrigues 1996),【问题2】被复制的调用,A,B3,B2,B1,C,复制的对象,客户复制 调用请求,对象三次收到 相同的调用,3.2 基于多数表决的协议,【基本思想】要求客户在读或写一个复制的数据项之前向多个服务器提出请求,并获得它们的许可。

12、e.g. 1).半数以上的人同意修改,则修改。文件获得一个最新的版本号。 2).半数以上的人的文件版本号一致,那么该文件为最新版本。(因为剩下的人不可能发起步骤1),Gifford方案,Goal_1:读取一个具有N个副本的文件Need:读团体(NR个以上服务器的任何集合)Goal_2:修改这个文件Need:写团体(至少NW个服务器的集合),限制条件:(1).防止读写操作冲突 (2).防止读读操作冲突,(1)式说明NR和NW两个集合必须有交集。也就是说,在读团体里面有写团体的成员。客户在查看版本号时,会知道哪个服务器是最新的,并选择那个服务器。,Nw,N-Nw,成员的版本号 是一致的,读团体NR

13、,必须是包含所有可能版本的集合,那么客户才能选择最新的版本和服务器。,A B C DE F G HI J K L,NR=3,NW=10,A B C DE F G HI J K L,NR=7,NW=6,A B C DE F G HI J K L,NR=1,NW=12,N=12,NW6,可能导致写写操作冲突,“读一个,写全部”(ROWA),代价:写操作需要获取所有的副本,4. 高速缓存相关性协议,高速缓存是一类特殊的复制,通常由客户而不是服务器来控制。高速缓存相关性协议保证高速缓存与服务器启动的副本一致,在原理上,高速缓存相关性与迄今为止我们讨论过的各种一致性协议没有多大的差别。 高速缓存相关性方

14、面的两个问题:1).相关性检测策略2).相关性实施策略,4.1 相关性检测策略,【静态方法】假定编译器在运行之前执行必要的分析,并确定哪些数据可能因为它们被缓存而导致不一致性。编译器仅插入一些避免不一致性的指令。【动态方法】不一致性在运行时检测。例如检查服务器,查看被缓存的数据自从被缓存后是否被改变。,在分布式数据库中,根据事务处理器件进行检测的确切时间,将动态的基于检测的协议(Franklin 1997)分为三类。事务处理期间访问高速缓存的数据项时,检验是否与服务器中的一致。完成一致性检测之前,不能使用缓存的数据项。(先检测后用)进行一致性检测时,继续执行事物处理。若检测出不一致性,事务处理

15、异常中止。(边检测便用,结果出来了再考虑)只在事务处理委托检测时才检测数据项是否为最新。(乐观的),第2种方法是最有效的,因为节约了方法1的等待时间,并且大部分情况下,数据是最新的。,4.2 相关性实施策略,该策略决定了高速缓存如何与服务器存储的各副本保持一致。最简单的办法就是不允许缓存共享数据,把共享数据仅保存在服务器上,客户只允许缓存私有数据。当共享数据被缓存时,实现高速缓存的一致性可采用两种办法:1).每当一个数据项被修改后,服务器向所有的高速缓存发送无效化信息。2).仅传播更新。,进程修改了被缓存的数据可能发生的情况:,1).高速缓存只读。更新只能发生在服务器上,然后由服务器把更新操作

16、传播到缓存中。用户检测到高速缓存过时了,就向服务器请求更新。2).允许用户直接修改被缓存的数据项,并将更新转发到服务器。直写式高速缓存:类似于基于主备份的本地写协议,客户的高速缓存成了一个临时的主备份。回写式高速缓存:?,5. 实现以客户为中心的一致性,上述问题是由用户对不同的副本进行操作的事实引起的,引入以客户为中心的一致性可以缓解这个问题。本质上,以客户为中心的一致性为单一的客户提供一致性保证,保证该客户对数据存储访问的一致性它并不为不同客户的并发访问提供任何一致性的保证。四种类型:单调读、单调写、写后读、读后写,5.1 简单实现,读操作集 由客户所执行的读操作相关的写操作组成的。写操作集 由客户所执行的写操作的标识符组成。,每个写操作W都被分配一个全局唯一的标识符。服务器(即W的源)把该标识符赋给提交写操作的客户。,客户的两个操作集,单调一致性的实现,1,客户,R1(x),R2(x),X的读操作集w1,w2,w3,2,没做w3,都做了,1).在服务器1上,先做w3,然后读取 2).把读操作转发到服务器2上执行。先读,后在服务器1上执行w3,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报