介绍
zookeeper 词为动物管理员
- zookeeper是一款开源的分布式协调服务框架,为分布式环境提供了一致性服务的功能,常见应用场景有:统一配置管理,文件管理,集群管理,分布式锁等功能。
- zookeeper 在CAP理论中保证了C(一致性)和P(分区容错性)。
安装
官方下载地址:http://archive.apache.org/dist/zookeeper/
自己选择合适的版本下载即可。目前最新的版本为3.7.0,所以我们本次使用的是apache-zookeeper-3.7.0-bin.tar.gz
zookeeper安装apache-zookeeper-3.7.0-bin.tar.gz
-
解压:tar -zxvf apache-zookeeper-3.7.0-bin.tar.gz
-
进入conf目录在重新复制一份zoo_sample.cfg文件并命名为zoo.cfg
cp zoo_sample.cfg zoo.cfg
-
在安装目录创建dataDir和dataLogDir并配置到zoo.cfg(推荐,若不配置,zk创建一个默认文件夹)
启动
到bin目录下 ./zkServer.sh start停止
./zkServer.sh stop启动客户端(方便命令行测试)
./zkCli.sh
数据模型
zookeeper的数据节点可以视为树状结构(或者目录),树中的各节点被称为
znode(即zookeeper node),一个znode可以有多个子节点。
以文件系统进行类比的话,Znode天然具有目录和文件两重属性:即Znode既可以当做文件往里面写东西,又可以当做目录在下面挂载其他Znode。当然,由于Znode具有不同的类型,后半部分并不完全准确。
znode
节点的数据:即znode data(节点path, 节点data)的关系就像是java map中(key,value)的关系
节点的子节点children
节点的状态stat:用来描述当前节点的创建、修改记录,包括cZxid、ctime等。
常见命令行
节点类型
ZooKeeper中的节点有两种,分别为临时节点和永久节点。节点的类型在创建时即被确定,并且不能改变。
- 临时节点
该节点的生命周期依赖于创建它们的会话。一旦会话(Session)结束,临时节点将被自动删除,当然可以也可以手动删除。虽然每个临时的Znode都会绑定到一个客户端会话,但他们对所有的客户端还是可见的。另外,ZooKeeper的临时节点不允许拥有子节点。 - 永久节点
该节点的生命周期不依赖于会话,并且只有在客户端显示执行删除操作的时候,他们才能被删除。
顺序节点
当创建Znode的时候,用户可以请求在ZooKeeper的路径结尾添加一个递增的计数。这个计数对于此节点的父节点来说是唯一的,它的格式为"%10d"(10位数字,没有数值的数位用0补充,例如"0000000001")。当计数值大于2的32次方-1时,计数器将溢出