Paxos算法概要
paxos的论文真的是很晦涩难懂,实际上并没有那么复杂。个人的理解是这样的
- paxos的特性少数服从多数
- prepare阶段。proposer提出方案n给多数acceptor,acceptor只接收编号比n大的方案
- commit阶段。proposer收到多数acceptor的回应,就发出提交方案的指令给acceptor。acceptor检查方案的编号是否为最大的编号。如果最大则允许提交,可能存在活锁的情况。
这只是paxos的基础理解,真正应用paxos算法去做分布式一致性,还是需要考虑很多方面的。下面简单的看下ZooKeeper的特性。
Zookeeper是一个分布式协调服务中间件,最主要做两件事,选举和协调。个人觉得最主要解决了数据一致性和单点的问题。
一致性保证
- 全局串行写操作
- 同一客户端FIFO执行