ZooKeeper是什么? ZooKeeper是一个开源的分布式服务框架,运行在Java环境中,主要用来解决分布式应用中遇到的数据管理问题:数据的发布/订阅、负载均衡、统一名称服务、状态同步服务、分布式协调/通知、集群管理、Master选举、分布式锁盒分布式队列等等。 简而言之,zookeeper=文件系统+监听通知机制。 ZooKeeper允许分布式进程通过共享的分层命名空间相互协调,ZooKeeper数据保存在内存中,可以实现高吞吐量和低延迟数。可靠性方面使其不会称为单点故障,严格的排序意味着可以在客户端实现复杂的同步原语。 1 部署ZooKeeper 在部署ZooKeeper前,需要安装配置JAVA环境,安装如下: 1.1 下载ZooKeeper并解压安装 1.2 添加环境变量 1.3 修改ZooKeeper配置 cat /application/zookeeper-3.4.14/conf/zoo.cfg 1.4 创建数据存储目录及日志目录 mkdir /application/zookeeper-3.4.14/{data,logs} 1.5 启动ZooKeeper 1.6 ZooKeeper执行程序简介 1.6.1 zkServer.sh启动文件 zkServer.sh通常用来启动、终止、重启ZK服务器,用法如下: 1.6.1 zkCli.sh客户端连接 zkCli.sh是用来连接zk服务的脚本程序文件,使用该脚本程序连接到ZK后,可管理ZK服务,用法如下: create [-s] [-e] path data acl (1)创建ZooKeeper持久节点 (2)创建ZooKeeper顺序节点 (3)创建ZooKeeper临时节点 (4)读取节点命令 读取节点命令有以下四个: (a)ls path [watch] (b)ls2 path [watch] (c)get path [watch] get 读取数据内容和属性信息可以看到, get 不像 ls2 一样更够列出/下的文件名称,只显示当前节点的属性信息 (d)stat path [watch] stat命令和get命令基本一致 (e)set path data [version] set命令用来更新节点数据内容 先使用ls2获取当前节点的属性信息 (5)更新数据节点 (a)delete path [version] 持久节点以及顺序节点只有使用删除命令才能够消失 使用delete命令来删除持久节点permanent 注意:如果数据节点下有子目录的时候必须先删除子目录,然后在删除父目录,否则使用delete是不可取的 例子: (b)rmr path rmr也同时删除节点命令,但它和delete的区别在于,它会忽略节点下的子目录,直接递归删除数据节点下的所有目录及数据节点 1.7 监控ZK的四字命令 ZooKeeper支持某些特定的四字命令与其交互,他们大多数是查询命令,用来获取ZK服务当前状态及相关信息。用户在客户端可通过telnet或nc向ZooKeeper提交相应的命令 可用的四字命令如下: (a)rook 测试是否启动了ZooKeeper (b)stat 查询当前连接的端口及IP和其它信息 (c)srvr 显示当前ZK服务的信息,跟stat很相似,但是它只显示ZK的自身信息 (d)conf 输出ZK相关的服务配置相信信息 (e)cons 列出所有连接到ZK服务器的客户端的完全连接/会话详细信息 (f)wchs 列出watch的详细信息 (g)envi 列出当前jdk,以及zk所用到的jdk配置信息 (h)dump 列出未经处理的回话和临时节点 (i)reqs 列出未处理的请求 (j)mntr 列出一些监控信息