目录
下载地址
官网首页:https://zookeeper.apache.org/
Zookeeper的由来
Zookeeper最早起源于雅虎研究院的一个研究小组。在当时,研究人员发现,在雅虎内部很多大型系统基本都需要依赖一个类似的系统来进行分布式协调,但是这些系统往往都存在分布式单点问题。所以,雅虎的开发人员就试图开发一个通用的无单点问题的分布式协调框架,以便让开发人员将精力集中在处理业务逻辑上。
关于“ZooKeeper”这个项目的名字,其实也有一段趣闻。在立项初期,考虑到之前内部很多项目都是使用动物的名字来命名的(例如著名的Pig项目),雅虎的工程师希望给这个项目也取一个动物的名字。时任研究院的首席科学家RaghuRamakrishnan开玩笑地说:“在这样下去,我们这儿就变成动物园了!”此话一出,大家纷纷表示就叫动物园管理员吧一一一因为各个以动物命名的分布式组件放在一起,雅虎的整个分布式系统看上去就像一个大型的动物园了,而Zookeeper正好要用来进行分布式环境的协调一一于是,Zookeeper的名字也就由此诞生了。
顾名思义 zookeeper 就是动物园管理员,他是用来管 hadoop(大象)、Hive(蜜蜂)、pig(小
猪)的管理员, Apache Hbase 和 Apache Solr 的分布式集群都用到了 zookeeper;Zookeeper:
是一个分布式的、开源的程序协调服务,是 hadoop 项目下的一个子项目。他提供的主要功
能包括:配置管理、名字服务、分布式锁、集群管理。
Zookeeper是什么
Zookeeper的特点
1. 也是⼀个分布式集群,⼀个领导者(leader),多个跟随者(follower).

ZooKeeper集群的角色
1.Leader
Zookeeper 集群工作的核心
事务请求 (写操作) 的唯一调度和处理者,保证集群事务处理的顺序性
集群内部各个服务器的调度者
对于 create, setData, delete 等有写操作的请求,则需要统一转发给leader 处理.leader 需要决定编号、执行操作,这个过程称为一个事务
2.Follower
处理客户端非事务(读操作)请求,转发事务请求给 Leader
参与集群Leader 选举投票
3.Observer(对于访问量比较大的集群,可以新增观察者角色)
观察者角色,观察Zookeeper集群的最新状态变化并将这些状态同步过来,对于非事务请求可以进行独立处理,对于事务请求,则会转发给 Leader服务器进行处理
不会参与任何形式的投票只提供非事务服务,通常用于在不影响集群事务处理能力的前提下提升集群的非事务处理能力
Zookeeper的数据模型

图中的每个节点称为一个Znode
每个 Znode 由3部分组成:
stat:此为状态信息,描述该 Znode 的版本,权限等信息
data:与该Znode 关联的数据
children:该 Znode下的子节点