故事
Lamport描述了一个名为Paxos的希腊城邦(算法得名于此),这个城邦是按照民主的议会制度来进行选举的,所有的居民进行提议和投票来选出决议。但是居民们不想花时间一直在选举上,大家都不定时地来提议、了解提议、投票、看进展等等
CAP
- C:一致性
- A:可用性
- P:分区容错性
CAP定理指 在一个分布式系统中,无法同时满足 CAP 3个特性。 在分布式系统中,分区是必须面对的问题,因此P是一定要成立的。
在满足分区容错性(P)的前提下,一个分布式系统只能满足 一致性(C)或者 可用性(A)
像zk之类的配置中心对一致性要求较高,一般都是CP
共识算法
共识算法可以理解为了实现分布式一致性协议而产生的一系列流程与规则。 共识算法大体分为两种类型:
- 拜占庭算法:伪造信息恶意响应的情况
- 非拜占庭算法:把出现故障(即不响应)但不会伪造信息的情况
Paxos
概念
Paxos:达成共识的方式-少数服从多数;也就是典型的“多数人暴政” 在Paxos中,包含三种角色:
- 提案者(Proposer):提案者。也就是进行写操作的人
- 接受者(Acceptor):对每个提议的值进行投票,并存储接受的值
- 学习者(Learner):被告知投票的结果,接受达成共识的值