一、ZooKeeper 选举机制
1. 前提理论介绍
- zookeeper 的来源,是来自于 google chubby。为了解决在分布式环境下,如何从多个 server 中选举出 master server。那么这多个 server 就需要涉及到一致性问题,这个一致性体现的是多个server 就 master 这个投票在分布式环境下达成一致性。简单来说就是最终听谁的。但是在网络环境中由于网络的不可靠性,会存在消息丢失和或者被篡改等问题。所以如何在这样一个环境中快速并且正确的在多个server 中对某一个数据达成一致性并且保证不论发生任何异常,都不会破坏整个系统一致性呢?所以在 Lamport 大神设计了一套 Paxos 的算法,多个 server 基于这个算法就可以达成一致。而 google chubby 就是基于 paxos 算法的实现,用来实现分布式锁服务。并且提供了 master 选举的服务
Chubby 和 paxos 算法有什么关系?
- Chubby 本来应该设计成一个包含 Paxos 算法的协议库,是的应用程序可以基于这个库方便的使用 Paxos 算法,但是它并没有这么做,而是把 Chubby 设计成了一个需要访问中心化节点的分布式锁服务。既然是一个服务,那么它肯定需要是一个高可靠的服务。所以 Chubby 被构建为一个集群,集群中存在一个中心节点(