ZooKeeper的命令行操作

运行 zkCli.sh –server <ip:port> 进入命令行工具,连接后使用help可以查看所有命令:

1.使用 ls 命令来查看当前 ZooKeeper 中所包含的内容:

[zk: 202.115.36.251:2181(CONNECTED) 1] ls /

2.创建一个新的 znode ,使用 create /zk myData 。这个命令创建了一个新的 znode 节点“ zk ”以及与它关联的字符串:

[zk: 202.115.36.251:2181(CONNECTED) 2] create /zk "myData“

3.我们运行 get 命令来确认 znode 是否包含我们所创建的字符串:

[zk: 202.115.36.251:2181(CONNECTED) 3] get /zk

监听这个节点的变化,当另外一个客户端改变/zk时,它会打印下面的

[zk: localhost:2181(CONNECTED) 4] get /zk watch
WATCHER::
WatchedEvent state:SyncConnected type:NodeDataChanged path:/zk

4.下面我们通过 set 命令来对 zk 所关联的字符串进行设置:

[zk: 202.115.36.251:2181(CONNECTED) 4] set /zk "zsl“

5.下面我们将刚才创建的 znode 删除:

[zk: 202.115.36.251:2181(CONNECTED) 5] delete /zk

6.如果znode下面有子节点,用delete是删除不了的,要用递归删除:rmr

[zk: 202.115.36.251:2181(CONNECTED) 5] rmr /zk

实际测试:

[root@BC-VM-edce4ac67d304079868c0bb265337bd4 zookeeper-3.4.6]# bin/zkCli.sh -127.0.0.1:2181
Connecting to localhost:2181
2015-06-11 10:55:14,387 [myid:] - INFO  [main:Environment@100] - Client environment:zookeeper.version=3.4.6-1569965, built on 02/20/2014 09:09 GMT...[zk: localhost:2181(CONNECTED) 5] help
ZooKeeper -server host:port cmd argsconnect host:portget path [watch]ls path [watch]set path data [version]rmr pathdelquota [-n|-b] pathquitprintwatches on|offcreate [-s] [-e] path data aclstat path [watch]closels2 path [watch]historylistquota pathsetAcl path aclgetAcl pathsync pathredo cmdnoaddauth scheme authdelete path [version]setquota -n|-b val path

下面测试一下常用的命令:

  • create:创建路径结点。
  • ls:查看路径下的所有结点。
  • get:获得结点上的值。
  • set:修改结点上的值。
  • delete:删除结点。
[zk: localhost:2181(CONNECTED) 6] create /zktest mydata
Created /zktest
[zk: localhost:2181(CONNECTED) 12] ls /
[zktest, zookeeper]
[zk: localhost:2181(CONNECTED) 7] ls /zktest
[]
[zk: localhost:2181(CONNECTED) 13] get /zktest
mydata
cZxid = 0x1c
ctime = Thu Jun 11 10:58:06 CST 2015
mZxid = 0x1c
mtime = Thu Jun 11 10:58:06 CST 2015
pZxid = 0x1c
cversion = 0
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 6
numChildren = 0
[zk: localhost:2181(CONNECTED) 14] set /zktest junk
cZxid = 0x1c
ctime = Thu Jun 11 10:58:06 CST 2015
mZxid = 0x1f
mtime = Thu Jun 11 10:59:08 CST 2015
pZxid = 0x1c
cversion = 0
dataVersion = 1
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 4
numChildren = 0
[zk: localhost:2181(CONNECTED) 15] delete /zktest
[zk: localhost:2181(CONNECTED) 16] ls /
[zookeeper]

ZooKeeper API的使用

org.apache.zookeeper.Zookeeper是客户端入口主类,负责建立与server的会话。
它提供了如下几类主要方法:

功能 描述
create 在本地目录树中创建一个节点
delete 删除一个节点
exists 测试本地是否存在目标节点
get/set data 从目标节点上读取 / 写数据
get/set ACL 获取 / 设置目标节点访问控制列表信息
get children 检索一个子节点上的列表
sync 等待要被传送的数据

增删改查的demo

package com.lzumetal.zookeeper.helloworld;import org.apache.zookeeper.*;
import org.apache.zookeeper.data.Stat;
import org.junit.Before;
import org.junit.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;import java.util.List;/*** Created by liaosi on 2017/11/18.*/
public class SimpleZkClient {private static final Logger log = LoggerFactory.getLogger(SimpleZkClient.class);private static String connectString = "server01:2181,server02:2181,server03:2181";private static int timeoutMils = 2000;private ZooKeeper zooKeeper;@Beforepublic void init() throws Exception {zooKeeper = new ZooKeeper(connectString, timeoutMils, new Watcher() {//收到事件通知后的回调函数(即我们自己的实际处理逻辑)@Overridepublic void process(WatchedEvent event) {log.info(event.getPath() + "---->" + event.getType());}});}/*** 数据的增删改查*///创建节点@Testpublic void testCreate() throws KeeperException, InterruptedException {//参数1:节点的路径;参数2:节点的数据;参数3:节点的权限;参数4:节点的类型zooKeeper.create("/idea", "hello zookeeper".getBytes(), ZooDefs.Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT);//上传的数据可以是任何类型,但都要转成byte数组}//获取子节点@Testpublic void getGetChild() throws KeeperException, InterruptedException {//true表示注册了创建zookeeper时的监听器,也可以重新注册一个新的监听器List<String> childrens = zooKeeper.getChildren("/", true);for (String children : childrens) {log.info(children);}}//判断节点是否存在@Testpublic void testExist() throws KeeperException, InterruptedException {Stat exists = zooKeeper.exists("/idea", true);System.out.println(exists == null ? "Not exist" : "Exist");}//获取节点数据@Testpublic void testGetData() throws KeeperException, InterruptedException {byte[] data = zooKeeper.getData("/idea", false, null);System.out.println(new String(data));}//删除节点@Testpublic void testDelete() throws KeeperException, InterruptedException {//-1表示将所有节点都删除zooKeeper.delete("/idea", -1);}
}

相关代码以上传至GitHub:https://github.com/liaosilzu2...

ZooKeeper(四)ZooKeeper的简单使用相关推荐

  1. ZooKeeper学习-- Zookeeper简单介绍

    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. 一.分布式协调技术 在给大家介绍ZooKeeper之前先来给大家介绍一种技术--分布式协调技术.那么 ...

  2. 4-5 zookeeper四字命令

    zk四字命令 Four Letter Words 四字命令简介 zk可以通过它自身提供的简写命令来和服务器进行交互 zk通过简写的命令和服务器进行交互,进行交互之后可以提供一些服务器的状态信息.环境变 ...

  3. zookeeper四字监控命令

    文章目录 zookeeper四字监控命令 什么是四字监控命令 配置监控属性 安装nc conf命令 cons命令 crst命令 dump命令 envi命令 ruok命令 stat命令 srst命令 w ...

  4. 5、zookeeper四字监控命令/配置属性

    1.zookeeper四字监控命令介绍 zookeeper支持某些特定的四字命令与其的交互.它们大多数是查询命令,用来获取zookeeper服务的当前状态及相关信息.用户再客户端可以通过telnet或 ...

  5. Zookeeper详细介绍+dubbo简单介绍+简单大白话讲解

    Zookeeper zookeeper前言 zookeeper简介绍 dubbo中为何使用zookeeper(如果理解dubbo实现原理可以忽略) dubho好处简单介绍下 dubbo如何使用zook ...

  6. 【Zookeeper】Zookeeper 管理文档

    Zookeeper 管理文档 文章目录 Zookeeper 管理文档 一.部署 1.1 系统要求 1.1.1 支持系统平台 1.1.2 支持情况 1.1.3 所需软件 1.2 集群(多服务器)部署 1 ...

  7. 【从入门到放弃-ZooKeeper】ZooKeeper实战-分布式队列

    前言 上文[从入门到放弃-ZooKeeper]ZooKeeper入门中,我们学习了ZooKeeper的简单安装和cli使用. 接下来我们开始基于java API的实战编程.本文先来写一个分布式队列的代 ...

  8. ZooKeeper Internals -- ZooKeeper内部工作方式

    ZooKeeper Internals 介绍 原子广播 保证,属性和定义 领导者激活 活动消息 摘要 比较 法定人数 记录 开发者指南 记录在正确的级别 使用标准的slf4j成语 介绍 本文档包含有关 ...

  9. python系列之:kazoo连接Zookeeper操作Zookeeper

    python系列之:kazoo连接Zookeeper操作Zookeeper 一.连接zookeeper 二.读取zookeeper节点 三.读取zookeeper内容 四.kazoo连接Zookeep ...

  10. Zookeeper 4 Zookeeper JavaAPI 操作 4.9 模拟12306 售票案例

    Zookeeper [黑马程序员Zookeeper视频教程,快速入门zookeeper技术] 文章目录 Zookeeper 4 Zookeeper JavaAPI 操作 4.9 模拟12306 售票案 ...

最新文章

  1. 针对web服务器容灾自动切换方案
  2. Oracle数据库之集合运算
  3. 怎样写 OpenStack Neutron 的 Extension (四)
  4. linux c的连接库和怎么同时编译多个源程序
  5. PHP、Smarty与jQuery Ajax 分页插件jquery.pager.js的使用
  6. NIO_通道之间传输数据
  7. Android进阶:性能优化篇 Android进阶:性能优化篇
  8. python之函数用法capitalize()
  9. DevExpress lookupedit下拉列表不显示内容的问题
  10. 罗永浩重新定义直播带货
  11. 电信收费计费系统BI项目
  12. ScreenToClient GetClientRect
  13. 6410 UBOOT 支持SD/SDHC卡启动 FAT32文件系统 yaffs2烧录 图片显示烧录状态
  14. 利用lda对文本进行分类_使用lda进行文本分类
  15. torchvision.datasets.FashionMNIST报错[WinError 10054] 远程主机强迫关闭了一个现有的连接
  16. the daily 发布了
  17. AWS 上的云原生 Jenkins
  18. char类型与short类型
  19. 设顺序表va中的数据元素递增有序。试写一算法,将x插入到顺序表的适当位置上,以保持该表的有序性。
  20. 锤子落地,音乐版权内卷时代真能结束吗?

热门文章

  1. getAttribute, getParamter区别 转帖
  2. react+typescript报错集锦持续更新
  3. 路飞学城14天集训营作业2—三级菜单
  4. mp4 视频在网页上播放不了
  5. 如何利用Pre.im分发iOS测试包
  6. Google LOGO现代舞舞蹈动画
  7. git笔记之解决eclipse不能提交jar等文件的问题
  8. 初始化调用avplayer学习笔记
  9. Practical Tactics for Social Intercourse One
  10. 关于解决Server Tomcat v9.0 Server at localhost failed to start的问题