3、分布式文件系统(一致性协议)- 学习课件
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Paxos协议
主要角色
Proposer(提案者/提议者):提议一个值,对被投票决议。 Acceptor(附议者/接受者):对每个提议进行投票。 Learner(学习者/告知者):被告知投票的结果,不参与投
票过程。
Paxos协议
执行过程
规定一个提议包含两个字段:[n, v],其中 n 为序号(具有唯 一性),v 为提议值。
N: 在分布式存储系统中,有多少份备份数据。 W: 代表一次成功的更新操作要求至少有W份数据写入成功。 R: 代表一次成功的读数据操作要求至少有R份数据成功读取。 如果能够满足以下公式,则可称为满足“数据一致性协议”:
R+W>N
RWN协议
R =2
Read
A
W =2
Write
B
C
N =3
RWN协议示例
时间向量; 当收到有冲突的更改时,比较这两次更改的时间向量:若存在偏序关系,则取偏序关系中时间向量较大的对应的
值,并以此作为本节点新的时间向量;若不存在偏序关系,则不能合并; 其中的偏序关系是指:若A向量中的每一维都大于等于B向量,那么就说A,B向量之间存在偏序关系,否则不存在偏序 关系 。
向量时钟
两阶段提交协议
两阶段提交协议是很常用的解决分布式事务问题的方式,它可以保证在分布式事务中,要么所有参与进程都提交 事务,要么都取消事务,即实现ACID中的原子性(A)的常用手段。在数据一致性环境下,其代表的含义是:要么 所有备份数据同时更改某个数值,要么都不更改,以此来达到数据的强一致性。
在真实应用中,尽管有系统使用两阶段提交协议来作为数据一致性协议,但是比较少见, 更多的是作为实现数 据更新原子性手段出现,比如Raft—致性协议就在内部实现使用了两阶段提交协议来保证信息更新的原子性。
左图N为3,即系统中每个数据保留3份备份,R设置为2,含 义是在读取这个数据的时候至少要有2个备份数据读取成功, 此次读取才能被认为是有效读取。而W设置为2,含义是在写入 数据的时候会同时向3份备份写入,至少要有两份数据确认写 入成功,才能认为这是一次有效写入操作。因为R+W>N,所 以这种配置是符合“数据一致性协议”的,
的事件可以判断先后顺序,那么可以得知 A 发生在 B 之后; 时钟向量 A,B 不具有偏序关系 体现了 A,B 之间不存在能够将某一个向量的尾端顺着同一个节点连到另一个向
量中间的事件; 向量时钟算法的实质是: 将逻辑上可以合并的冲突成功合并; 逻辑上无法合并的冲突依旧冲突;
课程目录
Course catalogue
Paxos协议
协议内容: Paxos协议包含以下两个阶段
•[阶段一] 1.1【倡议者视角】倡议者选择倡议编号n,然后向大多数(即超过半数以上)接收者发送Prepare 请求,请求中附带倡 议编号n。 I.2【接受者视角】对于某个接受者来说,如果接收到带有倡议编号n的Prepare请求,則做如下判断:若倡议编号n 比此接受者之前响应过的任何其他Prepare请求附带的倡议编号都大,那么此接受者会给倡议者以响应,并承诺不会 响应之后接收到的其他任何倡议编号小于n的请求,另外, 如果接受者曾经响应过2.2阶段的Accept请求,则将所有 响应的Accept请求中倡议编号最高的倡议内容发送给倡议者,倡议内容包括两项信息:Accept请求中的倡议编号以 及其倡议值。若倡议编号 n不比此接受者之前响应过的任何其他Prepare请求附带的倡议编号都大,那么此接受者不 会给倡议者以响应。
如果则读取操作和写入操作成功的数据一定会有交集,这样 就可以保证一定能够读取到最新版本的更新数据,数据的强一 致性得到了保证。
RWN协议
需要说明的是,在具体实现系统时,仅仅依靠RWN议还不能完成一致性保证,因为在上述过程中,当读取到多个 备份数据时,需要判断哪些数据是最新的,如何判断数据的新旧?这需要向量时钟来配合,所以对于Dynamo来说 ,是通过RWN协议结合向量时钟来共同完成一致性保证的。
Paxos的提出者Leslie Lamport也因其对分布式系统的杰出理论贡献获得了 2013年图灵奖。
Paxos协议
4 1
客户端
2
服务器
一致性模块
2
Log
X 3y 1 y 9
状态机
3
副本状态机模型
集群中多台服务器各自保存一份Log副本及内部状态机, Log内顺序记载客户端发来的操作指令,服务器依次执行Log 内的指令并将其体现到内部状态机上,如果保证每台机器内的 Log副本内容完全一致,那么对应的状态机也可以保证整体状 态一致。一致性协议的作用就是保证各个Log副本数据的一致 性。
Oracle·WDPe·WDP
分布式文件系统(一致性协议)
Oracle 高校大数据课程系列
本课目标
掌握两阶段提交协议 掌握向量时钟、RWN协议 掌握PAXOS、ZAB、RAFT协议
课程目录
Course catalogue
1 两阶段提交协议 2 向量时钟 3 RWN协议 4 Paxos协议 5 ZAB协议 6 RAFT协议
某台服务器在接收到客户端的操作指令后,将其追加到自 身的Log尾部,然后和其他服务器的一致性模块进行通信,保 证其他服务器(即使是有服务器发生故障)的Log最终能够以 同样的顺序保存同样的操作指令,当操作指令能够正确复制, 那么每台服务器按照Log内记录顺序执行操作指令, 最终所有 服务器的内部状态保持一致
1 两阶段提交协议 2 向量时钟 3 RWN协议 4 Paxos协议 5 ZAB协议 6 RAFT协议
RWN协议
“RWN协议”是亚马逊公司在实现Dynamo KV 存储系统时提出的,这是一种通过对分布式环境下多备份数据如何 读/写成功进行配置来保证达到数据一致性的简明分析和约束设置。在说明这份协议前,先列出如下相关定义。
向量时钟
A 作出更改 Key=Value1,时间向量变为 (1,0,0);
A 的更改传输到了 B 处,B 处 Key=Value1, 且时间向量 变为 (1,0,0);
B 作出更改 Key=Value2, 将时间向量中自己对应的那一 维加 1 变为 (1,1,0);
B 和 A 的更改都同步到了 C 处。C 比较两者的时间向量 (1,0,0) 和 (1,1,0),发现存在偏序关系,于是 C 的时间向量 更新为 (1,1,0) 且 Key=Value2;
左图演示了两个 Proposer(提案者) 和三个 Acceptor(附 议者) 的系统中运行该算法的初始过程,每个 Proposer 都 会向所有 Acceptor 发送提议请求。
Paxos协议
执行过程
当 Acceptor 接收到一个提议请求,包含的提议为 [n1, v1], 并且之前还未接收过提议请求,那么发送一个提议响应,设 置当前接收到的提议为 [n1, v1],并且保证以后不会再接受序 号小于 n1 的提议。
两阶段提交将提交过程划分为连续的两个阶段:表 决阶段(Voting)和提交阶段 (Commit)。
两阶段提交协议
Commit t INIT
Vote-request
Vote-Abort Global-abort
ABORT
WAIT
Vote-commit Global-commit
COMMIT
有限状态机
向量时钟算法
总结如下: 给不同的节点设置不同的时间维度 体现了 不同节点之间没有一个统一的时钟,因此不同节点之间的时间就不具有
可比性; 每个节点的更新会在自己的时间维度上加 1 体现了 同一个节点上的时间是可以比较的; 时钟向量 A,B 具有偏序关系且 A>B 体现了 A 是在同一节点上,在 B 的基础上增加的得到的;同一节点上发生
Paxos协议
协议内容: •[阶段二] 2.1【倡议者视角】如果倡议者接收到大多数接受者关于带有倡议编号n的Prepare请求的响应, 那么倡议者向这些接 受者发送Accept请求,Accept请求附带两个信息:倡议编号n以及倡议值V。 倡议值v的选择方式如下:如果在1.2 阶段接受者返回了自己曾经接收的具有最高倡议编号Accept 请求倡议内容,则从这些倡议内容里面选择倡议编号最 高的并将其倡议值作为倡议值v;如果1.2阶段没有收到任何接受者的Accept请求倡议内容,则可以任意赋值给倡议值 V。 2.2【接受者视角】如果接受者接收到了任意倡议编号为n的Accept请求,则接受者接受此请求, 除非在此期间接受 者响应过具有比n更高编号的Prepare请求。
塞状态,如果一个协议包含阻塞状态,则明显是一个很脆弱的系统。 解决方案:
1.超时判断机制 2.参与者互询机制
课程目录
Course catalogue
1 两阶段提交协议 2 向量时钟 3 RWN协议 4 Paxos协议 5 ZAB协议 6 RAFT协议
向量时钟
向量时钟
在使用分布式数据库的时候,不同节点中数据的一 致性一向是一个经典且难以解决的问题,而这个问题的 根源是难以实现一个全局统一的时钟。下面就描述了这 种问题的一种情况:
如上图所示:A,B,C 表示分布式系统中的三个数据库,纵轴表示时间。在 TA1 时刻 A 做出了更改 Key=Value1,这次更改在 TC2 时刻传输到了 C;在 TB1 时刻 B 做出了更改 Key=Value2,这次更改在 TC1 时刻传输到了 C。那么问题来了:C 数据库中 的 Key 应该等于 Value1 还是 Value2 呢?
课程目录
Course cat来自百度文库logue
1 两阶段提交协议 2 向量时钟 3 RWN协议 4 Paxos协议 5 ZAB协议 6 RAFT协议
Paxos协议
在过去十年里,Paxos基本成为了分布式领域内一致性协议的代名词。Google的粗粒度锁服务Chubby的设计 开发者Burrows曾经说过:“所有一致性协议本质上要么是Paxos,要么是其变体”Paxos是几乎所有相关课程必讲 的内容以及很多其他一致性协议的起点。
向量时钟算法
在一个有 N 个节点的分布式数据库中,用一个 N 维的向量来表征时间,其中的某一个维表示一个节点的时间,这个 时间向量按照以下规则进行处理: 所有节点的初始时间向量都是0; 每一次经历一个时间间隔,都要在各自的时间维度上加1; 每次发送数据,都要将这个向量时间作为时间戳和数据一起发出去; 每次节点收到了时间向量,都要比较该时间向量和自身时间向量,并取两者中每一维中的最大值,作为自身新的
一:协调者有限状态机 二:参与者有限状态机
Vote-request Vote-abort
Vote-request Vote-commit
INIT
Global-Abort ACK
ABORT
READY
Global-commit ACK
COMMIT
两阶段提交协议
存在问题: 从协调者和参与者的有限状态机可以看出,有3个状态(WAIT,INIT,READY)需要等待对方反馈信息,所以进入阻
如左图,Acceptor X 在收到 [n=2, v=8] 的提议请求时,由 于之前没有接收过提议,因此就发送一个 [no previous] ( 尚无提案)的提议响应,并且设置当前接收到的提议为 [n=2, v=8],并且保证以后不会再接受序号小于 2 的提议。其它的 Acceptor 类似。
两阶段提交协议
协调者
参与者
2
协调者
参与者
2
协调者
3
3
1
1
1
4
4
5
5
VOTE_REQUEST
VOTE_COMMIT VOTE_ABORT
表决阶段
GLOBAL_COMMIT
GLOBAL_ABORT
ACK
提交阶段
2PC
在两阶段提交的语境下,存在两类不同实体:唯一 的协调者(Coordinator)和众多的参与者 (Participants ) 协调者起到分布式事务的特殊的管理协 调作用。
Paxos协议
基本概念: 在讲解Paxos协议之前,为了方便叙述与理解,首先介绍一些相关基本概念。 首先是并行进程(对应副本状态机上每台服务器的一致性模块)的角色(Role )概念,Paxos协议下不同并行进程可 能承担的3种角色如下。 •倡议者(Proposer):倡议者可以提出提议(数值或操作命令等)以供投票表决。 •接受者(Acceptor):接受者可以对倡议者提出的提议进行投票表决,从众多提议中选出唯一确定的一个。 •学习者(Learner):学习者无倡议投票权,但是可以从接受者那里获知是哪个提议最终被选中。 在一致性协议框架中,一个并行进程可以同时承担以上多种角色。