2.Zookeeper 集群
2.1 Zookeeper 集群简介
2.1.1 为什么搭建 Zookeeper 集群
大部分分布式应用需要一个主控、协调器或者控制器来管理物理分布的子进程。目前,
大多数都要开发私有的协调程序,缺乏一个通用机制,协调程序的反复编写浪费,且难以形 成通用、伸缩性好的协调器,zookeeper 提供通用的分布式锁服务,用以协调分布式应用。 所以说 zookeeper 是分布式应用的协作服务。
zookeeper 作为注册中心,服务器和客户端都要访问,如果有大量的并发,肯定会有等 待。所以可以通过 zookeeper 集群解决。
下面是 zookeeper 集群部署结构图:
2.1.2 了解 Leader 选举
Zookeeper 的启动过程中 leader 选举是非常重要而且最复杂的一个环节。那么什么是 leader选举呢?zookeeper为什么需要leader选举呢?zookeeper的leader选举的过程又是什 么样子的?
首先我们来看看什么是 leader 选举。其实这个很好理解,leader 选举就像总统选举一样, 每人一票,获得多数票的人就当选为总统了。在 zookeeper 集群中也是一样,每个节点都会 投票,如果某个节点获得超过半数以上的节点的投票,则该节点就是 leader 节点了。
以一个简单的例子来说明整个选举的过程. 假设有五台服务器组成的 zookeeper 集群,它们的 id 从 1-5,同时它们都是最新启动的,也 就是没有历史数据,在存放数据量这一点上,都是一样的.假设这些服务器依序启动,来看看会 发生什么 。
1) 服务器 1 启动,此时只有它一台服务器启动了,它发出去的报没有任何响应,所以它的 选举状态一直是 LOOKING 状态
2) 服务器 2 启动,它与最开始启动的服务器 1 进行通信,互相交换自己的选举结果,由于 两者都没有历史数据,所以id 值较大的服务器2胜出,但是由于没有达到超过半数以上的服务 器都同意选举它(这个例子中的半数以上是 3),所以服务器 1,2 还是继续保持 LOOKING 状态.
3) 服务器 3 启动,根据前面的理论分析,服务器 3 成为服务器 1,2,3 中的老大,而与上面不 同的是,此时有三台服务器选举了它,所以它成为了这次选举的 leader.
4) 服务器 4 启动,根据前面的分析,理论上服务器 4 应该是服务器 1,2,3,4 中最大的,但是 由于前面已经有半数以上的服务器选举了服务器 3,所以它只能接收当小弟的命了.
作者:
黑马程序员人工智能+python培训学院首发:
http://python.itheima.com/