赞
踩
java ‐version
# 下载
wget https://mirror.bit.edu.cn/apache/zookeeper/zookeeper‐3.5.8/apache‐zookeepe
r‐3.5.8‐bin.tar.gz
# 解压
tar ‐zxvf apache‐zookeeper‐3.5.8‐bin.tar.gz
cd apache‐zookeeper‐3.5.8‐bin
cp zoo_sample.cfg zoo.cfg
# 可以通过 bin/zkServer.sh 来查看都支持哪些参数
bin/zkServer.sh start conf/zoo.cfg
echo stat | nc 192.168.109.200 // 前提是配置文件中中讲 stat 四字命令设置了了白名单
4lw.commands.whitelist=stat
bin/zkCli.sh ‐server ip:port
输入命令 help 查看zookeeper所支持的所有命令
1 [zk: localhost:2181(CONNECTED) 80] help 2 ZooKeeper ‐server host:port cmd args 3 addauth scheme auth 4 close 5 config [‐c] [‐w] [‐s] 6 connect host:port 7 create [‐s] [‐e] [‐c] [‐t ttl] path [data] [acl] 8 delete [‐v version] path 9 deleteall path 10 delquota [‐n|‐b] path 11 get [‐s] [‐w] path 12 getAcl [‐s] path 13 history 14 listquota path 15 ls [‐s] [‐w] [‐R] path 16 ls2 path [watch] 17 printwatches on|off 18 quit 19 reconfig [‐s] [‐v version] [[‐file path] | [‐members serverID=host:port1:port 2;port3[,...]*]] | [‐add serverId=host:port1:port2;port3[,...]]* [‐remove serverI d[,...]*] 20 redo cmdno 21 removewatches path [‐c|‐d|‐a] [‐l] 22 rmr path 23 set [‐s] [‐v version] path data 24 setAcl [‐s] [‐v version] [‐R] path acl 25 setquota ‐n|‐b val path 26 stat [‐w] path 27 sync path
create [‐s] [‐e] [‐c] [‐t ttl] path [data] [acl]
中括号为可选项,没有则默认创建持久化节点
-s: 顺序节点
-e: 临时节点
-c: 容器节点
-t: 可以给节点添加过期时间,默认禁用,需要通过系统参数启用
create /test‐node some‐data
没有加任何可选参数,创建的就是持久化节点
get /test‐node
set /test‐node some‐data‐changed
stat /test‐node
get -s /test‐node
根据状态数据中的版本号有并发修改数据实现乐观锁的功能
客户端首先获取版本信息
get -s /node-test
/test-node 当前的数据版本是 1 , 这时客户端 用 set 命令修改数据的时候可以把版本号带上
set -v 1 /node-test changeData
如果在执行上面 set命令前, 有人修改了数据,zookeeper 会递增版本号, 这个时候,如果再用以前的版本号去修改,将会导致修改失败,报如下错误
zookeeper是以节点组织数据的,没有相对路径这么一说,所有的节点一定是以 / 开头
create /test‐node/test‐sub‐node
查看子节点信息,比如根节点下面的所有子节点, 加一个大写 R 可以查看递归子节点列表
ls /
ls /test‐node
create ‐e /ephemeral data
create 后跟一个 -e 创建临时节点 , 临时节点不能创建子节点
create /seq‐parent data // 创建父目录
create ‐s /seq‐parent/ data // 创建顺序节点。顺序节点将再seq‐parent 目录下面,顺序递增
create ‐s ‐e /ephemeral‐node/前缀‐
create ‐c /container
容器节点主要用来容纳字节点,如果没有给其创建子节点,容器节点表现和持久化节点一样,如果给容器节点创建了子节点,后续又把子节点清空,容器节点也会被zookeeper删除
针对节点的监听:一定事件触发,对应的注册立刻被移除,所以事件监听是一次性的
get ‐w /path // 注册监听的同时获取数据
stat ‐w /path // 对节点进行监听,且获取元数据信息
针对目录的监听,目录的变化,会触发事件,且一旦触发,对应的监听也会被移除,后续对节点的创建没有触发监听事件
ls ‐w /path
针对递归子目录的监听
ls ‐R ‐w /path : ‐R 区分大小写,一定用大写
如下对/test 节点进行递归监听,但是每个目录下的目录监听也是一次性的,如第一次在/test 目录下创建节点时,触发监听事件,第二次则没有,同样,因为时递归的目录监听,所以在/test/sub0下进行节点创建时,触发事件,但是再次创建/test/sub0/subsub1节点时,没有触发事件
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。