ZooKeeper(四)ZooKeeper的简单使用
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的简单使用相关推荐
- ZooKeeper学习-- Zookeeper简单介绍
前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. 一.分布式协调技术 在给大家介绍ZooKeeper之前先来给大家介绍一种技术--分布式协调技术.那么 ...
- 4-5 zookeeper四字命令
zk四字命令 Four Letter Words 四字命令简介 zk可以通过它自身提供的简写命令来和服务器进行交互 zk通过简写的命令和服务器进行交互,进行交互之后可以提供一些服务器的状态信息.环境变 ...
- zookeeper四字监控命令
文章目录 zookeeper四字监控命令 什么是四字监控命令 配置监控属性 安装nc conf命令 cons命令 crst命令 dump命令 envi命令 ruok命令 stat命令 srst命令 w ...
- 5、zookeeper四字监控命令/配置属性
1.zookeeper四字监控命令介绍 zookeeper支持某些特定的四字命令与其的交互.它们大多数是查询命令,用来获取zookeeper服务的当前状态及相关信息.用户再客户端可以通过telnet或 ...
- Zookeeper详细介绍+dubbo简单介绍+简单大白话讲解
Zookeeper zookeeper前言 zookeeper简介绍 dubbo中为何使用zookeeper(如果理解dubbo实现原理可以忽略) dubho好处简单介绍下 dubbo如何使用zook ...
- 【Zookeeper】Zookeeper 管理文档
Zookeeper 管理文档 文章目录 Zookeeper 管理文档 一.部署 1.1 系统要求 1.1.1 支持系统平台 1.1.2 支持情况 1.1.3 所需软件 1.2 集群(多服务器)部署 1 ...
- 【从入门到放弃-ZooKeeper】ZooKeeper实战-分布式队列
前言 上文[从入门到放弃-ZooKeeper]ZooKeeper入门中,我们学习了ZooKeeper的简单安装和cli使用. 接下来我们开始基于java API的实战编程.本文先来写一个分布式队列的代 ...
- ZooKeeper Internals -- ZooKeeper内部工作方式
ZooKeeper Internals 介绍 原子广播 保证,属性和定义 领导者激活 活动消息 摘要 比较 法定人数 记录 开发者指南 记录在正确的级别 使用标准的slf4j成语 介绍 本文档包含有关 ...
- python系列之:kazoo连接Zookeeper操作Zookeeper
python系列之:kazoo连接Zookeeper操作Zookeeper 一.连接zookeeper 二.读取zookeeper节点 三.读取zookeeper内容 四.kazoo连接Zookeep ...
- Zookeeper 4 Zookeeper JavaAPI 操作 4.9 模拟12306 售票案例
Zookeeper [黑马程序员Zookeeper视频教程,快速入门zookeeper技术] 文章目录 Zookeeper 4 Zookeeper JavaAPI 操作 4.9 模拟12306 售票案 ...
最新文章
- 针对web服务器容灾自动切换方案
- Oracle数据库之集合运算
- 怎样写 OpenStack Neutron 的 Extension (四)
- linux c的连接库和怎么同时编译多个源程序
- PHP、Smarty与jQuery Ajax 分页插件jquery.pager.js的使用
- NIO_通道之间传输数据
- Android进阶:性能优化篇 Android进阶:性能优化篇
- python之函数用法capitalize()
- DevExpress lookupedit下拉列表不显示内容的问题
- 罗永浩重新定义直播带货
- 电信收费计费系统BI项目
- ScreenToClient GetClientRect
- 6410 UBOOT 支持SD/SDHC卡启动 FAT32文件系统 yaffs2烧录 图片显示烧录状态
- 利用lda对文本进行分类_使用lda进行文本分类
- torchvision.datasets.FashionMNIST报错[WinError 10054] 远程主机强迫关闭了一个现有的连接
- the daily 发布了
- AWS 上的云原生 Jenkins
- char类型与short类型
- 设顺序表va中的数据元素递增有序。试写一算法,将x插入到顺序表的适当位置上,以保持该表的有序性。
- 锤子落地,音乐版权内卷时代真能结束吗?
热门文章
- getAttribute, getParamter区别 转帖
- react+typescript报错集锦持续更新
- 路飞学城14天集训营作业2—三级菜单
- mp4 视频在网页上播放不了
- 如何利用Pre.im分发iOS测试包
- Google LOGO现代舞舞蹈动画
- git笔记之解决eclipse不能提交jar等文件的问题
- 初始化调用avplayer学习笔记
- Practical Tactics for Social Intercourse One
- 关于解决Server Tomcat v9.0 Server at localhost failed to start的问题