1. 安装
下载地址: zookeeper.apache.org/releases.ht…
选择bin下载,避免本地编译,如选择最新的3.6.2版
下载完毕之后,解压放在目标位置
tar -xvf apache-zookeeper-3.6.2-bin.tar.gz 复制代码
启动之前请确保jdk8以上的环境
启动命令
# 前台使用默认配置启动 bin/zkServer.sh start-foreground 复制代码
2. 初体验
借助 bin/zkCli.sh
连接查看
# 资源列表 ls path # 列出路径下的资源 # 创建节点 # -e 表示临时, 不带表示持久节点 # -s 表示顺序节点 # path 路径 # data 携带的数据信息 create [-e] [-s] path data # 查看节点数据 get path # 设置数据 set path data [version] # 删除节点 delete path [version] 复制代码
实例演示
[zk: localhost:2181(CONNECTED) 28] create /hello '一灰' Created /hello [zk: localhost:2181(CONNECTED) 29] get /hello 一灰 [zk: localhost:2181(CONNECTED) 30] create /hello/01 '00' Created /hello/01 [zk: localhost:2181(CONNECTED) 31] create /hello/02 '02' Created /hello/02 [zk: localhost:2181(CONNECTED) 32] ls /hello [01, 02] [zk: localhost:2181(CONNECTED) 33] get /hello/01 00 [zk: localhost:2181(CONNECTED) 34] delete /hello Node not empty: /hello [zk: localhost:2181(CONNECTED) 35] delete /hello/01 [zk: localhost:2181(CONNECTED) 36] ls /hello [02] [zk: localhost:2181(CONNECTED) 39] create -e -s /hello/02 '有序' Created /hello/020000000002 [zk: localhost:2181(CONNECTED) 40] get /hello/02 02 [zk: localhost:2181(CONNECTED) 41] get /hello/020000000002 有序 [zk: localhost:2181(CONNECTED) 42] create -e -s /hello/03 '有序' Created /hello/030000000003 [zk: localhost:2181(CONNECTED) 43] ls /hello [02, 020000000002, 030000000003] 复制代码
3. 基本概念
四种节点:
- 持久化节点
PERSISTENT
: 节点创建之后,一直存在,除非手动删除 - 持久化顺序节点
PERSISTENT_SEQUENTIAL
: 持久化节点,与上面的区别在于它的顺序性,zk中,每个父节点会为第一级子节点维护时序,记录子节点创建的先后顺序,这里的有序可以理解为在节点名上添加一个有序的数字后缀,作为新的节点名 - 临时节点
EPHEMERAL
: 与持久节点的区别在于临时节点的生命周期与client绑定,当client终端,这个节点会被销毁 - 临时有序节点
EPHEMERAL_SEQUENTIAL
: 临时节点,有序,zk的分布式锁一般是采用它来实现