zookeeper定义
一个分布式服务框架,它主要是用来解决分布式应用中经常遇到的一些数据管理问题,如:统一命名服务、状态同步服务、集群管理、分布式应用配置项的管理等。简单来说zookeeper=文件系统+监听通知机制。
- 统一命名服务:在分布式环境下,经常需要对应用/服务进行统一命名,便于识别,如把域名保存到zookeeper中,值为ip。
- 分布式应用配置项的管理:为实现集群中各个服务器的配置信息一致,对配置文件修改后,希望能快速同步到集群中各个服务器上。可将配置信息写入zookeeper上的一个节点,各个服务器监听这个节点,一但节点中的数据被修改了,zookeeper将通知各个客户端。
- 集群管理:将集群中的单台服务器信息写入到zookeeper的节点上,监听这个节点,可获取他的实时状态变化
- 软负载均衡:在zookeeper中记录每台服务器的访问数,让访问数最少的去处理最新的客户端请求。
数据结构
zookeeper数据模型的结构和Unix文件系统很类似,类似一棵树每个节点称作一个ZNode,每个节点能够默认存储1MB的数据,每个节点都可以通过其路径唯一标识。所有的节点的开头都是/ .
安装
下载地址:http://archive.apache.org/dist/zookeeper/ 点击想要下载的版本,在官网上有两个tar.gz文件,从目前的最新版本3.5.5开始,带有bin名称的包才是我们想要的下载可以直接使用的里面有编译后的二进制的包,而之前的普通的tar.gz的包里面是只是源码的包无法直接使用, 将下载的文件上传到服务器上解压即可tar -zxvf apache-zookeeper-3.6.0-bin.tar.gz
配置修改
- 将conf路径下的
zoo_sample.cfg 修改为zoo.cfg ,命令mv zoo_sample.cfg zoo.cfg - 修改zoo.cfg的dataDir路径,这个是快照所在目录,
- 启动命令
bin/zkServer.sh start ,如果启动成功,会打印Starting zookeeper … STARTED,如果失败可查看logs下面的日志,如果是因为8080端口被占用启动失败,可以通过修改zoo.cfg文件的admin.serverPort=8888 修改端口,这个端口是新版本的AdminServer的端口,不是zookeeper的端口 - 启动客户端:
bin/zkCli.sh
客户端命令
查看所有节点
ls /
创建节点
create /node1 node1Data
获取节点值
get /node1
|