1、Zookeeper理论基础
1.3 Paxos算法
对于zk的学习,最重要的也是最难的就是Paxos算法学习。所以首先我们需要学习Paxos算法。
1.3.1 算法简介
Paxos算法是莱斯利.兰伯特1990年提出的一种基于消息传递的、具有高容错性的一致性算法。Google Chubby的作者Mike Burrows说过,世上只有一种一致性算法,那就是Paxos,所有的其他的一致性算法都是Paxo算法的不完整版本。Paxos算法是一种公认的晦涩难懂的算法,并且工程实现上也有很大的困难。较有名的Paxos工程实现有Google Chubby、ZAB、微信的PhxPaxos等。
Paxos算法是用于解决什么问题呢?Paxos算法要解决的问题是,在分布式系统中就某个决议达成一致。
1.3.2 Paxos与拜占庭将军问题
拜占庭将军问题是由Paxos算法作家莱斯利.兰伯特提出的点对点通信的基本问题。该问题要说明的含义是,在不可靠信道上试图通过消息传递的方式达到一致性是不可能的。所以,Paxos算法的前提是不存在拜占庭问题,即信道是安全的、可靠的,集群间传递消息是不会被篡改的。