分布式一致性系统算法

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Paxos 算法
• 算法问题 (a)在一轮选举中需要确保∅ 恒定的,集 合的大小不能变化。 (b)proposal编号的全局有序。 (b)活锁问题,多次选举到没有达成一致。
Paxos Lease算法
• 算法背景 活锁的问题在理论上的确存在,Lamport给出的解决办法是选举出 一个proposer作leader,所有的proposal都通过leader来提交,当 Leader宕机时马上再选举其他的Leader。 Leader之所以能解决这个问题,是因为其可以控制提交的进度,比 如果之前的proposal没有结果,之后的proposal就等一等,不着急提高 编号再次提交,相当于把一个分布式问题转化为一个单点问题,而单 点的健壮性是靠选举机制保证Leader 。
Server Client S1 S2 S3
分布式系统一致性定义
• 弱一致性
假如A先写入了一个值到存储系统,存储系统不能 保证后续A,B,C的读取操作能读取到最新值。此种情 况下有一个“不一致性窗口”的概念,它特指从A 写入值,到后续操作A,B,C读取到最新值这一段时间。
Server
Client
S1 S2 S3
A5
Paxos 算法
• 算法角色 Client Proposer Proposer Leader Acceptor Learn。
Paxos 算法
• Phase1:prepare (a)任何一个proposer选择一个proposal编号n,
发送给所有的acceptor。 (b)任何一个acceptor,如果发现n是它已回复的 请求中编号最大的,它会回复它已accept的最大 的proposal和对应的value(如果有);同时还附 有一种承诺:不会批准编号小于n的proposal。否 则拒绝接收。
Paxos 算法
• 算法提出
Paxos算法是莱斯利· 兰伯特(Leslie Lamport)于1990年提出的一种基于消息传 递的一致性算法。
• 问题描述
希腊岛屿Paxon 上的执法者(legislators,后面称为 牧师priest)在议会大厅(chamber)中表决通过 法律,并通过服务员传递纸条的方式交流信息, 每个执法者会将通过的法律记录在自己的账目 (ledger)上。问题在于执法者和服务员都不可靠, 他们随时会因为各种事情离开议会大厅,并随时 可能有新的执法者(或者是刚暂时离开的)回到 议会大厅进行法律表决,使用何种方式能够使得 这个表决过程正常进行,且通过的法律不发生矛 盾。
Paxos 算法
算法实现
参考链接
• http://blog.csdn.net/chen77716/article/details/616667 5 • http://blog.csdn.net/chen77716/article/details/617023 5 • http://blog.csdn.net/chen77716/article/details/617239 2 • http://en.wikipedia.org/wiki/Paxos_(computer_science) • http://zh.wikipedia.org/zh/Paxos%E7%AE%97%E6%B3 %95 • http://research.microsoft.com/enus/um/people/lamport/pubs/paxos-simple.pdf
Two-phase commit(2PC)
• 两段式提交问题
1 准备阶段,资源节点故障。 2 准备阶段,协调节点故障。 3 提交阶段,资源节点故障。 4 提交阶段,协调节点故障。
Paxos 算法
• 算法背景 Paxos 算法解决的问题是一个分布式系统如何就某 个值(决议)达成一致。一个典型的场景是,在一 个分布式数据库系统中,如果各节点的初始状态一 致,每个节点都执行相同的操作序列,那么他们最 后能得到一个一致的状态。为保证每个节点执行相 同的命令序列,需要在每一条指令上执行一个“一 致性算法”以保证每个节点看到的指令一致。一个 通用的一致性算法可以应用在许多场景中,是分布 式计算中的重要问题。因此从20世纪80年代起对于 一致性算法的研究就没有停止过。节点通信存在两 种模型:共享内存(Shared memory)和消息传递 (Messages passing)。Paxos 算法就是一种基于消 息传递模型的一致性算法。
• XA架构
Two-phase commit(2PC)
• XA架构描述
XA是由X/Open组织提出的分布式事务的规范。XA规 范主要定义了(全局)事务管理器(Transaction Manager) 和(局部)资源管理器(Resource Manager)之间的接口。 XA接口是双向的系统接口,在事务管理器 (Transaction Manager)以及一个或多个资源管理器 (Resource Manager)之间形成通信桥梁。XA之所 以需要引入事务管理器是因为,在分布式系统中, 从理论上讲两台机器理论上无法达到一致的状态, 需要引入一个单点进行协调。事务管理器控制着全 局事务,管理事务生命周期,并协调资源。
问题貌似越来越复杂,因为又需要一个Leader选举算法, 但Lamport在fast paxos中认为该问题比较简单,因为Leader选 举失败不会对系统造成什么影响,因此这个问题他不想讨论。 但是后来他又说,Fischer, Lynch, and Patterson的研究结果表 明一个可靠的选举算法必须使用随机或超时(租赁)。
分布式系统一致性定义
• 最终一致性
终一致性是弱一致性的一种特例。假如A首先write了一 个值到存储系统,存储系统保证如果在A,B,C后续读取之 前没有其它写操作更新同样的值的话,最终所有的读取 操作都会读取到最A写入的最新值。 “不一致性窗口” 的大小依赖于以下的几个因素:交互延迟,系统的负载, 以及复制技术中replication的个数。
Paxos 算法
• 公式推导 • 背景: M1=C1=P1=A1=L1 ∅ = {������1, ������2, ������3, ������4, ������5} Phase1: P1������ ={A1,A2,A3} P5������ = {������3, ������4, ������5} P1������ ∈ ∅ P5������ ∈ ∅
Update Server Client Server
S1
S2
S3
Two-phase commit(2PC)
• 两阶段提交
所谓的两个阶段是指:第一阶段:准备阶段和第二 阶段:提交阶段。
Two-phase commit(2PC)
• 准备阶段
事务协调者(事务管理器)给每个参与者(资源管理 器)发送Prepare消息,每个参与者要么直接返回失败 (如权限验证失败),要么在本地执行事务,写本地的 redo和undo日志,但不提交,到达一种“万事俱备, 只欠东风”的状态。(例如:SQL的语法、语义检查, 数据安全规范约束检查,数据完整性检查等。)
Paxos 算法
• Phase3:Lease
(a)Master会定期的向其他节点发放lease租期, 当各个节点收到租期的时候,及时更新自己的 master有效时间。 (b)当某一节点定时check Master的lease时间, 发现已经超时,尝试去和master节点获取lease,如果 获取到新的Master和Lease,如果获取得到就更新。获 取不到发起选举,提名自己为master。
Paxos Lease算法
• 算法过程
Prepare阶段
• 提名自己为Master
Accept阶段
• 对候选人进行决议选出一个Master
Learn阶段
• Master告诉其他机器,并 设置lease
Lease阶段
Paxos 算法
• Phase1:prepare (a)任何一个proposer选择一个proposal编号n, 并把自己机器ip作为value,提名自己为master,将 消息广播给其他所有的acceptor。 (b)任何一个acceptor,如果发现n是它已回 复的请求中编号最大的,当他已经accept其他 机器为master,它会回复它已accept的最大的 proposal和对应的ip,如果没有接受当前的请求 的ip作为master;同时还附有一种承诺:不会 批准编号小于n的proposal。否则拒绝接收。
Paxos 算法
• 算法过程
Prepare阶段
• 选择候选人名单
Accept阶段
• 对候选人进行决议选出一个Leader
Learn阶段
• Leader告诉其他人群 我已当选
Paxos 算法
• 流程图
Phase1 C1 C2 C3 C4 Phase2
P1
A1
A2 A3 P5 A4 P1 L5
C5
P5
Paxos 算法
• 公式推导 • 背景: M1=C1=P1=A1=L1 ∅ = {������1, ������2, ������3, ������4, ������5} P1������ > 0.5 ∅ P5������ > 0.5 ∅ Phase2: ∁=P1v ∩ P5v ������������ ∈ ������ C������ > 0.5 ������ ������������ → ������5 ������5 = ������ 或者 ������������ → ������1 ������1 = ������ Cm × 没有任何结果
分布式系统一致性问题
• 一个业务操作需要修改两个数据
P
ob
mysql
分布式系统一致性问题
• 多个业务操作需要同时修改同一个数据
A
B
C
ob
分布式系统一致性问题
• 网络不确定性-order A C
ob
分布式系统一致性定义
• 强一致性(即时一致性)
假如A先写入了一个值到存储系统,存储系统保证 后续A,B,C的读取操作都将返回最新值。
Paxos 算法
• Phase2:accept
(a)如果proposer接收到了多数派的回应,它发 送一个accept消息到(编号为n,机器ip为v的 proposal)到acceptor的多数派。 (b)acceptor接收到accept消息后check,如果没 有比n大的回应比n大的proposal,则accept对应的ip; 否则拒绝或不回应。
Two-phase commit(2PC)
• 提交阶段
如果协调者收到了参与者的失败消息或者超时, 直接给每个参与者发送回滚(Rollback)消息;否则, 发送提交(Commit)消息;参与者根据协调者的指令 执行提交或者回滚操作,释放所有事务处理过程中 使用的锁资源。
Two-phase commit(2PC)
Paxos 算法
• Phase2:accept
(a)如果proposer接收到了多数派的回应,它 发送一个accept消息到(编号为n,value v的 proposal)到acceptor的多数派(可以与prepare 的多数派不同)关键是这个value v是什么,如果 acceptor回应中包含了value,则取其编号最大的 那个,作为v;如果回应中不包含任何value,则 有proposer随意选择一个。 (b)acceptor接收到accept消息后check,如果 没有比n大的回应比n大的proposal,则accept对 应的value;否则拒绝或不回应。
分布式ቤተ መጻሕፍቲ ባይዱ统一致性原理与应用
淋雨
分布式系统特征
C A
P
分布式系统特征
• 一致性(C):在分布式系统中的所有数据备份,
在同一时刻是否同样的值。
• 可用性(A):在集群中一部分节点故障后,集
群整体是否还能响应客户端的读写请求。
• 分区容忍性(P):集群中的某些节点在无法
联系后,集群整体是否还能继续进行服务。
相关文档
最新文档