前言

ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致***的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。
Zookeeper从设计模式角度来理解:是一个基于观察者模式设计的分布式服务管理框架,他负责存储和管理大家都关心的数据,然后接受观察这的注册,一旦这些数据的状态发生了变化,Zookeeper就将负责通知已经在Zookeeper上注册的那些观察者做出相应的反应,从而实现集群中类似Master、Slave管理模式

特点:

图片说明
1.Zookeeper:一个领导者(leader),多个跟随者(follower)组成的集群。
2.Leader负责进行投票的发起和决议,更新系统状态。
3.Follower用于接受客户请求并向客户端返回结果,在选举Leader过程中总参与投票
4.集群中只要有半数以上节点存活,Zookeeper集群就能正常服务
5.全局数据一致:每个server保存一份相同的数据副本,client无论连接到哪个server,数据都是一致的。
6.更新请求顺序进行,来自同一个client的更新请求按其发送顺序依次执行。
7.数据更新原子性,依次数据更新要么成功,要么失败。
8.实时性,在一定时间范围内,client能读到最新数据

数据结构

ZooKeeper 数据模型的结构与 Unix 文件系统很类似,整体上可以看作是一棵树,每个
节点称做一个 ZNode。每一个 ZNode 默认能够存储 1MB 的数据,每个 ZNode 都可以通过其路径唯一标识。

图片说明

应用场景

提供的服务包括:统一命名服务、统一配置管理、统一集群管理、服务器节点动态上下
线、软负载均衡等。
统一命名服务
图片说明

统一配置管理

图片说明
统一集群管理
集群管理结构图如下所示

图片说明

服务器节点动态上下线

图片说明

软负载均衡

图片说明