分布式一致性算法:Paxos (学习总结)

来源:互联网 发布:大众软件2016 7月 编辑:程序博客网 时间:2024/06/05 18:58
1. 概述
Google Chubby 的作者
Mike Burrows:
“There is only one consensus protocol, and that's Paxos”-all other approaches are just broken versions of Paxos
意即:世界上只有一种一致性算法,那就是Paxos(帕克索斯),所有其它一致性算法都是Paxos算法的不完整版!
Paxos是为了解决分布式环境下一致性的问题而提出的算法,因chubby而声名大噪。
作者Leslie Lamport由于首次发表关于paxos的论文“The Part-Time Parliament”晦涩难懂,于是2001年发表“Paxos Made Simple”
并在introduction中说道:
“The Paxos algorithm for implementing a fault-tolerant distributed system has been regarded as difficult to understand, perhaps because the original presentation was Greek to many readers [5]. In fact, it is among the simplest and most obvious of distributed algorithms.”

2. 问题

Assume a collection of processes that can propose values. A consensus algorithm ensures that a single one among the proposed values is chosen. If no value is proposed, then no value should be chosen. If a value has been chosen, then processes should be able to learn the chosen value. The safety requirements for consensus are:
  a. Only a value that has been proposed may be chosen,
  b. Only a single value is chosen
  c. A process never learns that a value has been chosen unless it actually has been.
例如,在分布式环境下,多台客户端都想要获取一把锁,如何解决锁的归属问题。
可以把问题抽象为在分布式环境下,如何给不确定的元素赋值的问题。

3. 解决方案
1)Master/slaver

优点:实现简单。
缺点:单点故障。
2)Multi-master
Multi-master指一个系统存在多个master
优点:解决了单点故障。
缺点:不易实现一致性
3)2PC
优点:实现简单。
缺点:所有参与者需要阻塞(block),throughput低;无容错机制,一节点失败则整个事务失败。

paxos算法和以上三种方式对比:



4. Paxos算法描述
概念:

instance(实例):一次Paxos算法执行。
proposal(议案):未经批准的决议称为议案
value(决议):被最终批准通过的议案中的value称为决议
角色:

Proposer(提案者):提出议案
Acceptor(批准者):审批议案
Leaner(学习者):学习决议
问题
定义好概念和角色后,可以更精确的定义问题:
    1)决议(value)只有在被 proposers 提出后才能批准;
    2)在一次 Paxos 算法的执行实例中,只批准一个 Value;
    3)learners 只能获得被批准的 Value。
约束:

1)一个批准者必须接受他收到的第一个议案。
2)
提出一个编号为n具有值v的议案的前提是:存在一个多数派,要么他们中没有人批准过编号小于n的任何提案,要么他们批准的提案中编号小于n的最大的提案值是v
通过一个决议分为两个阶段:

prepare 阶段:
        1)提案者选择一个议案编号 n 并将 prepare 请求发送给批准者中的一个多数派;
        2)批准者收到 prepare 消息后,如果提案的编号大于它已经回复的所有 prepare 消息,则批准者将自己上次的批准回复给提案者,并承诺不再批准小于 n 的提案;
批准阶段:
        1)当一个提案者收到了多数批准者对 prepare 的回复后,就进入批准阶段。它要向回复 prepare 请求的批准者发送批准的请求,包括编号 n 和根据约束2 决定的 value。
        2)在不违背自己向其他提案者的承诺的前提下,批准者收到批准请求后即批准这个请求
算法保证在任何阶段被打断,都能保证最终的正确性。

参考:
paper:Paxos Made Simple
http://zh.wikipedia.org/zh-cn/Paxos%E7%AE%97%E6%B3%95

http://www.cnblogs.com/ychellboy/archive/2009/12/28/1634443.html

来自:http://blog.csdn.net/yfkiss/article/details/6967311

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 澳洲未婚妻签需要单身证明怎么办 高院收到申诉材料怎么办? 辞职出国留学后社保怎么办 高三数学40来分怎么办 论文查重表格内容重复怎么办 榕树叶子掉光了怎么办 2017江苏高考2c怎么办 高考刚过三本线怎么办 江苏高考选修有d怎么办 西安地铁卡丢了怎么办 酒后头痛怎么办快速缓解疼痛 孕妇感冒头痛怎么办快速缓解疼痛 投稿后发现文章有错误怎么办 如有一方不同意离婚怎么办 孩子上课时注意力不集中怎么办 幼儿上课时注意力不集中怎么办 孩子读初中不爱读书怎么办 老师需要刺激孩子家长怎么办 错觉视界第11关怎么办 爱逃学的学生老师怎么办 论文投稿发现有错误怎么办 孩子上初中数学物理不好怎么办 火山小视频误踢怎么办 铁棍山药弄到手很痒怎么办 山药皮过敏很痒怎么办 貔貅被家人摸了怎么办? 摸了山药很痒怎么办 山药搞得皮肤痒怎么办 手上弄了山药痒怎么办 老板就是个富二代怎么办 中考准考证密码忘了怎么办 准考证号和密码忘了怎么办 安运继续教育考试不及格怎么办 微信的视频打不开怎么办 公众号被取消了怎么办 合同上不写工资怎么办 已经上班了想考个大专文凭怎么办 微信小程序违规暂停服务怎么办 程序锁密码忘了怎么办 忘了应用锁密码怎么办 毕业后发现论文有错误怎么办