paxos算法

来源:互联网 发布:梦幻西游数据错误 编辑:程序博客网 时间:2024/05/22 03:29

paxos算法解决的问题是如何在一个分布式系统中就某个问题达成共识,解决数据的一致性问题。具体来讲,因为分布式系统包含众多节点,节点之间通过消息传递进行通信,在这一过程中必然存在消息的丢失、延迟、重复等问题,在这种情况下,集群中所有的节点如何对某个全局数据达成一致,保持数据的一致性,即使paxos要解决的问题。


paxos将节点分为proposer、acceptor、learner三种角色,proposer发起提案,acceptor收到提案后可以接受提案,也可以拒绝提案,若提案被大多数acceptor接受,则表示该提案通过。learner不参与以上过程,只是获取最重被通过的提案。


paxos分为两个阶段:prepare阶段和批准阶段


prepare阶段

proposer发起一个提案(编号为N),并将该提案发送给多于一半的acceptor。

acceptor收到提案后,如果之前没有接受过其他的提案,则回复OK;如果已经接受过其他的提案(编号为M),但M<N,那么acceptor将提案M回复给proposer,如果M>=N,则不做回复。


批准阶段

当一个proposer收到多数acceptor的回复后,就进入批准阶段,他会向回复proposer的acceptor发送accept请求(具体的提案编号),需要注意的是,该提案编号不一定就是最开始的N,因为proposer可能会接收到多个accpetor发送不来的多个提案,proposer会从多个提案中选择一个编号最大的提案(表明提案更权威)发送给acceptor。

acceptor收到accept请求后即接受对应的提案请求。


这里需要注意的是

(1)在一次paxos算法的执行中,可能不能确定一个共识提案,则需要再执行一次。

(2)提案的编号表示对应节点的优先级和权威性,用于当acceptor在同时收到多个提案时,如何选择一个提案,这个和现实世界是一样的,人们往往会选择更权威的提案。

(3)为了让算法更快的产生出一个最重的提案,建议参与投票节点的数量为一个奇数。


网上有一些该算法的实现,可以参考:

https://github.com/cocagne/paxos

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 胃疼腹泻稀水怎么办 网购成瘾怎么办 知乎 军人被警察打了怎么办 对高院再审不服怎么办 对高院判决不服怎么办 白色砂锅烧黑了怎么办 手机被偷关机了怎么办 狗被眼镜蛇咬了怎么办 穿高跟鞋脚趾头长茧怎么办 穿皮鞋脚底板疼怎么办 鞋子穿了脚趾痛怎么办 脚被鞋子磨肿了怎么办 脚趾磨出茧子怎么办疼 脚掌长茧走路疼怎么办 脚底磨出茧子疼怎么办 手指上写字有茧怎么办 写字磨的茧子疼怎么办 脚上的大脚骨疼怎么办 脸特别烫 又红怎么办 6岁宝宝发音不准怎么办 3岁宝宝发音不准怎么办 5岁宝宝发音不准怎么办 4岁宝宝发音不准怎么办 被螃蟹夹出血了怎么办 苹果6主板坏了怎么办 键盘掉了一个键怎么办 汽车屏幕砸坏了怎么办 电视的屏幕坏了怎么办 高三孩子早恋该怎么办 高一早恋家长该怎么办 高二早恋家长该怎么办 200斤新娘抱不动怎么办 160斤新娘抱不动怎么办 科目二挂了5次怎么办 纹身纹完了肿了怎么办 在宿舍被孤立了怎么办 b站视频不见了哟怎么办 站立时间长了脚疼怎么办 坐的时间长腰疼怎么办 站久了膝盖疼怎么办 站久了膝盖疼是怎么办