ZooKeeper 是一个开源的分布式,它的设计目标是将那些复杂且容易出错的分布式协同服务封装起来,抽象出一个高效可靠的原语集,并以一系列简单的接口提供个用户使用。html
ZooKeeper 有几大特征:node
ZooKeeper 的理解和使用成本都很低,它提供的是一种层级式的命名空间,这一点和标准的文件系统相似。apache
ZooKeeper 服务能够支持集群模式,而且可以轻松扩展,客户端能够链接到任意一个服务器,都可以得到服务。bash
ZooKeeper 的节点是能够保证有序的。每个更新操做都会被标记一个序号,ZooKeeper 执行的时候会按照顺序执行。服务器
ZooKeeper 在读多写少的应用场景中能够实现快速响应。这是由于 ZooKeeper 自己的部署架构是主从模式,主节点能够响应读写请求,而从节点只能响应读请求。当读写比例大于10:1时,ZooKeeper 就能够利用扩展能力改善集群的响应速度。session
介绍完了 ZooKeeper 的总体状况,咱们再来看看 ZooKeeper 的另外一个比较重要的概念——节点(Node)。架构
ZooKeeper 的节点叫作Znode,能够分为两种:一种是持久性的,一种是临时性的。每个 Znode 均可以存储数据,Znode 的更新是以版本更新的形式迭代的。所以,客户端接收数据的同时还会接收到版本信息。app
ZooKeeper 临时节点的生命周期是与 session 相关的,当 session 处于活跃状态时,临时节点会一直存在,当 session 消亡时,临时节点会被删除。分布式
ZooKeeper 客户端在和 Server 端进行链接的时候,会建立一个 session,客户端能够主动关闭 session。当 ZooKeeper 服务端节点没有在指定时间内收到客户端消息的话,服务端也会关闭 session。若是创建链接出错,ZooKeeper 客户端也会自动和其余服务端节点尝试创建新的链接。设计
ZooKeeper 的安装方式很是简单,首先到官网下载 ZooKeeper 的安装包,而后解压安装包。
接着是修改配置文件,进入目录apache-zookeeper-3.6.2-bin/conf
,从 zoo_sample.cfg 文件复制出来一个名为 zoo.cfg 的配置文件,修改dataDir=/data/zookeeper
,这个目录用于存储 ZooKeeper 的数据。配置好以后,咱们就能够启动 ZooKeeper 了,不过为了更好的使用 ZooKeeper 命令,咱们把 ZooKeeper 相关命令配置到 PATH 中。
如今就能够启动 ZooKeeper 了。只须要使用下面这个命令便可。
zkServer.sh start
启动以后,咱们来看一下 ZooKeeper 有没有报错,咱们来到 ZooKeeper 目录下的 logs 目录,输入命令
grep -E -i "((exception)|(error))" *
若是没有输出,说明 ZooKeeper 启动没有报错。
接着查看对2181端口的监听
netstat -an | grep 2181
正常监听的话,咱们就可使用客户端进行链接了。
在确保 ZooKeeper 服务端启动没有问题后,咱们使用客户端进行链接。
链接时会有上图所示的日志输出。
链接好以后能够输入命令
ls -R /
这个命令用来查看 ZooKeeper 现有的节点。
/ /zookeeper /zookeeper/config /zookeeper/quota
最初只有几个 ZooKeeper 自带的目录。
这里可使用 create /app
命令来建立一个名为 app 的目录。
对于 ZooKeeper 的初印象到这里就结束了,目前我已经对 ZooKeeper 有了一个大概的了解,而且可以顺利在本机安装 ZooKeeper,对于 ZooKeeper 的命令也有必定的了解。
后面咱们会对 ZooKeeper 常见的应用进行介绍。