一个开源的分布式的,为分布式应用提供协调服务的Apache项目。
提供一个简单的原语集合,以便于分布式应用可以在它之上构建更高层次的同步服务。
设计非常易于编程,它使用的是类似于文件系统那样的树形数据结构。
目的就是将分布式服务不再需要由于协作冲突而另外实现协作服务。
集群必须是个奇数
zookeeper service
这种架构支持高并发,client有可能访问任何一个server。server服务器的数量必须是个奇数。其中有一个是leader。
zookeeper数据结构
数据结构和分等级的命名空间
- Zookeeper的命名空间的结构和文件系统很像。一个名字和文件一样使用/的路径表现,zookeeper的每个节点都是被路径唯一标识。
-
ZooKeeper's Hierarchical Namespace
zookeeper应用场景
- 场景解释
Zookeeper 从设计模式角度来看,是一个基于观察者模式设计的分布式服务管理框架,它负责存储和管理大家都关心的数据,然后接受观察者的注册,一旦这些数据的状态发生变化,Zookeeper 就将负责通知已经在 Zookeeper 上注册的那些观察者做出相应的反应,从而实现集群中类似Master/Slave 管理模式。 - 应用场景
统一命名服务(Name Service)
配置管理(Configuration Management)
集群管理(Group Membership)
共享锁(Locks)/同步锁
zookeeper单机模式
安装JDK、配置环境变量、验证java –version
下载、赋执行权限、解压
下载地址:http://apache.dataguru.cn/zookeeper/权限:chmod u+x zookeeper-3.4.5.tar.gz
解压:tar -zxvf zookeeper-3.4.5.tar.gz -C /opt/modules/
-
配置
复制配置文件:cp conf/zoo_sample.cfg conf/zoo.cfg创建数据存储目录:mkdir /opt/modules/zookeeper-3.4.5/data/zkData
配置数据存储目录:dataDir=/opt/modules/zookeeper-3.4.5/data/zkData 启动
启动:bin/zkServer.sh start检测
Client Shell:bin/zkCli.sh 或者 查看状态:bin/zkServer.sh status
配置参数详解
- tickTime:这个时间是作为 Zookeeper 服务器之间或客户端与服务器之间维持心跳的时间间隔,也就是每个 tickTime 时间就会发送一个心跳。
- dataDir:顾名思义就是 Zookeeper 保存数据的目录,默认情况下,Zookeeper 将写数据的日志文件也保存在这个目录里。
- clientPort:这个端口就是客户端连接 Zookeeper 服务器的端口,Zookeeper 会监听这个端口,接受客户端的访问请求。
-
Zookeeper Client 命令讲解
命令:bin/zkCli.sh -server localhost:2181
详解:ls、get、create、delete