1.0 Zookeeper简介

2016-04-12 23:01:00 4,445 1

Zookeeper是一个应用于分布式应用程序的开源的分布式服务。分布式应用可以在Zookeeper基础之上构建同步服务、 配置维护、组合管理和命名服务。Zookeeper很容易使用,使用类似于文件操作系统的目录结构树来维护元数据。Zookeeper服务端的运行要依赖JDK,客户端API包含Java和C。

众所周知,协同服务是比较难以处理的。特别容易导致静态条件和死锁。Zookeeper的设计动机是让程序员不需要再从头开始来实现分布式应用的协同服务。

Zookeeper集群的元数据维护在一个共享的命名空间中(文件目录树结构形式),Zookeeper集群中的每个实例都可以进行访问。命名空间中的每个节点类似于文件系统中文件夹和文件,在Zookeeper中称之为Znode。与传统文件系统不同的是,Zookeeper的文件目录树种保存的所有信息都在内存中。

Zookeeper集群结构

Image.png

Server实例共同组成了Zookeeper服务。

Client连接到其中一个Server实例。客户端维护一个TCP连接,通过其进行发送请求,获得相应,获得监控事件,进行心跳检测。如果心跳检测失败,Client将会连接到另一个Server实例。

Zookeeper数据模型和等级命名空间

Image.png


与标准文件系统不同的是,Zookeeper命名空间中的每一个节点都可以维护数据,并且含有子节点。