最新整理分布式系统的倚天剑和屠龙刀.ppt

  • 格式:ppt
  • 大小:630.50 KB
  • 文档页数:5

下载文档原格式

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

任何一个A必须批准它收到的第一个value。 A在round i的prepare过程(phase 1)收到phase1a:
(a)如果i<rnd,且round rnd的C(beginner)不是round i的 C’(beginner),即C!=C’,则通知round i的C’拒绝(reject[rnd]) 它的prepare请求。如果C = C’,则忽略这个prepare请求。 (important!)
Phase2b
Ab(e0c,0a,unusell)1>0 A(1,1,value_s)
L receive phase2b from a
aln]yCv(a1lu,veapluroep_oss)ed by
p.CC(0(1,n,nuulll)l)
A(1,0,null)
A(0,0,null)
qleuaornrLuvmal,uthee_ns
倚天剑:Paxos
“安得倚天剑,跨海斩长鲸” ---《临江王节士歌》李白
一个典型的场景是,在一个分布式数据库系统中, 如果各节点的初始状态一致,每个节点都执行相 同的操作序列,那么他们最后能得到一个一致的 状态。
银行的存取业务 多个节点的操作
不仅只用在分布式系统,凡是多个过程需要达成 某种一致性的都可以用到Paxos 算法。
P:proposer,也可以是客户端,提交议案。
C:coordinator,协调者,
A:acceptor,选举者,
L:learner,学习者,
A round include two phases:
(i)phase 1
(ii)phase 2
crnd:某C开始的rounds中的最高的round number
phase2b from a quorum,then learn value_s
正常运行(round 2 as an example)
AA(2(1,1,1,v,vaaluluee__ss))
P
A(2,2,value_s)
Phase 2b
C(1,value_s)
Phase 2b
L
Reject [1]
令K为来自该quorum消息中所有vrnd的最大值,V为来自该 quorum的消息中vrnd = k的消息对应的vval值的集合(当 k>0时,fast paxos在文中证明了这样的vval值只有一个)。 If k = 0,C可以任意挑选一个来自P的value作为value_s else,将V中的那个唯一的value作为我们的挑选value_s 将value_s和round number j+1 作为phase 2a的内容发送给 所有的A,并设置cval = value_s,若收到某A的Nack[h],h>j, 设置crnd = h+1并重复上述prepare过程。否则,若收到来 自某quorum的phase2b消息,则说明对该value_s的选举已 经完成。
所有的消息可能丢失或者延时,但是不会出错。
message
Phase 1a:prepare Phase 1b:promise Phase 2a:accept Phase 2b:accepted
1、C要提出一个value并获得批准的过程叫做一个round,它两 个阶段:phase1和phase2.
P
C(0,null)
bAe(1c,a1u,vsaelu1e>_0s) AA((01,0,0,n,nuulll)l)
phase2b from a quorum,then learn value_s
L
Ab(e1c,1a,uvsaelu1e>_s0)
L receive
P
AA((01,0,0,n,nuulll)l)
2、C开始某个round i,发送phase 1a[i]给所有的A,如果收到某 A的reject[j](j>i),重新发送phase 1a[j+x](为方便举例,令 x = 1),并设置[crnd = j+1,cval = 0]。
3、Pick a value: 收到来自某quorum的phase 1b[j+1,vrnd,vval]消息回复。
A(rnd,vrnd,vval)
L
பைடு நூலகம்
P
C(crnd,cval)
A(rnd,vrnd,vval)
L
A(rnd,vrnd,vval)
P
初始化(round 1)
P
Phase2b PhaCfsrPPoRehhme2caaeaassivq[eeeu111op,abrVhua[am[s1el,1,up10ib]ec,kn_su]l
(b)如果i >= rnd,令rnd = i,发送phase 1b消息。
Phase 1b:[ rnd,vrnd,vval]
A在round i的phase 2收到phase 2a[i,vval_i]: (a)如果i<rnd, 即C!=C’,则通知round i的C’拒绝(Nack[rnd]) 它的accept请求。如果C = C’,则忽略这个accept请求。 (important!)
Ab(1e,1ca,vuaslue e1_>s)0
P
A(1,0,null)
L receive phasLe2b from a
C(0,null)
A(b0e,0c,anuuslle) 1>0 AA((11,1,0,v,naululle) _s)
quorum,then learn value_s
L receLive
(b)如果i>=rnd,令rnd = vrnd = i,vval = vval_i,发送phase2b 故而在其它的C开始更高round number的过程时,Round有
可能被中断 。
角色介绍
A(rnd,vrnd,vval)
P
C(crnd,cval)
L
A(rnd,vrnd,vva l)
P
L
C(crnd,cval)
A(1,1,value_s)
cval:某C在round crnd中提出的value。
rnd:某A参加过的rounds中最高的round number
vrnd:某A批准过的rounds中最高的round number
vval:某A在round vrnd中批准的value。
Quorum:a majority of the acceptors