Skip to content

Commit 419a2a7

Browse files
author
代码风水师
committed
添加了Paxos算法分析(概念篇)
1 parent 1a27943 commit 419a2a7

File tree

1 file changed

+34
-6
lines changed

1 file changed

+34
-6
lines changed
Lines changed: 34 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,41 @@
1-
**Paxos算法** 是基于消息传递的一致性算法,当前在分布式系统应用中被公认的最有效的强一致性算法。
1+
<h3 style="padding-bottom:6px; padding-left:20px; color:#ffffff; background-color:#E74C3C;">Paxos算法(强一致性算法)</h3>
22

3+
**Paxos协议** 是一种就某个议题打成一致共识的协议(共识协议)。
34

45

5-
角色:
66

7-
Proposer :提议者
7+
#### 什么是共识?
88

9-
Acceptor:决策者
9+
比如在一个部门内,部门老大问大家年度旅游去哪里玩,大家先是选取旅游地点,可能大家的旅游向往地不一致,有人想去新加坡,有人想去泰国,意见产生分歧,这就是没打成**共识**。为了打成共识,部门老大说“既然意见不一致,大家就旅游目的地进行投票表决吧,选取票最多的目的地”。大家在参与投票,以及认可投票结果,最后大家打成共识。
1010

11-
Client:产生议题者
11+
共识是一组参与者就一个结果达成一致的过程。如果参与者或他们的交流媒介可能遇到故障时,这个问题就变得困难了。比如上述投票过程是用的微信投票小程序(交流媒介),假设微信投票小程序挂了(仅仅是假设),那么打成共识的过程就会出现问题。
1212

13-
Learner:最终决策学习者
13+
---
14+
15+
基于Paxos协议实现的算法,当前在分布式系统应用中被公认的最有效的强一致性算法。下面就来分析一下“强一致性”的Paxos算法的机制。
16+
17+
18+
19+
#### 角色:
20+
21+
**Client**:产生议题者,客户机向分布式系统发出请求,并等待响应。例如,分布式文件服务器中文件的写入请求。
22+
23+
**Acceptor(Voters)**:决策者(投票者),接受者,接受方充当协议的容错“存储器”。接受者被收集到称为引言的组中。任何发送给承兑人的信息必须发送到承兑人的法定人数。除非从仲裁中的每个接受方收到副本,否则从接受方收到的任何消息都将被忽略。
24+
25+
**Proposer** :提议者,提议者主张客户请求,试图说服接受方同意该请求,并在发生冲突时充当协调人,推动协议向前发展。
26+
27+
**Learner**:(最终决策)学习者,学习者充当协议的复制因素。一旦接受方同意客户请求,学习者可以采取行动(即:执行请求并向客户发送响应)。为了提高处理的可用性,可以添加更多的学习者。
28+
29+
**Leader**:领导者,Paxos需要一个杰出的提议者(称为领导者)来取得进展。许多进程可能认为它们是领导者,但协议只保证最终选择其中一个进程时才能取得进展。如果两个进程认为它们是领导者,它们可能会通过不断提出冲突的更新来拖延协议。然而,在这种情况下,安全性能仍然保持不变。
30+
31+
32+
33+
Quorums通过确保至少有一些幸存的处理器保留对结果的了解,来表达Paxos的安全性(或一致性)属性。Quorums定义为一组接受者的子集,其中任意两个子集(即任意两个quorum)共享至少一个成员。通常,仲裁是参与的接受方的任何多数。例如,给定一组接受者{A,B,C,D},多数仲裁将是任意三个接受者:{A,B,C}, {A,C,D}, {A,B,D}, {B,C,D}, {B,C,D}。更一般地,可以给受体分配任意的正权值;在这种情况下,仲裁可以定义为接受方的任何子集,其汇总权重大于所有接受方总权重的一半。
34+
35+
36+
37+
38+
39+
---
40+
41+
Paxos通常用于需要持久性的地方(例如,复制文件或数据库),其中持久性状态的数量可能很大。即使在一定数量的副本没有响应的情况下,协议也会尝试取得进展。还有一种机制可以删除永久失败的副本或添加新副本。

0 commit comments

Comments
 (0)