Zookeeper的基本操作
写在前面的话:读书破万卷,编码如有神
--------------------------------------------------------------------
参考内容:
《私塾在线》,cc老师
--------------------------------------------------------------------
主要内容包括:
- zkCli的操作
- 四字命令
- zookeeper的java客户端操作
--------------------------------------------------------------------
1、zkCli的操作
进入zookeeper的安装目录下的bin目录

通过zkCli.sh进行连接

通过help查看有什么命令可以使用

(1)stat path 查看当前path结点的消息

(2)get path 、set path是给当前path节点设置值和获取值


(3)ls path 是列出当前路径有哪些节点

(4)create [-s] [-e] path data acl
通过create可以在path路径上创建一个节点
参数
[-s]: 可选,代表一个序列号
[-e]: 可选,代表一个临时节点
path: 代表节点创建的路径
data: 代表该节点的值
acl: 代表access control list

(5)delete path [version]
通过delete可以删除path路径上的节点(如果有子节点,则不能删除)

(6)rmr path
通过rmr可以删除path路径上的节点(包括子节点)
---------------------------------------------------------------------------
2、四字命令
zookeeper支持某些特定的四字命令,他们大多是用来查询zookeeper服务的当前状态及相关信息的.
(1)conf : 输出相关服务配置的详细信息

(2)cons : 列出所有连接到服务器的客户端的完全的连接 、会话的详细信息。包括"接收/发送"的包数量、会话Id、操作延迟、最后的操作执行等信息

(3)dump : 列出未经处理的会话和临时节点

(4)envi : 输出关于服务环境的详细信息

(5)reqs : 列出未经处理的请求
(6)ruok : 测试服务是否处于正确状态。如果确实如此,那么服务返回"imok",否则不做任何相应

(7)stat : 输出关于性能和连接的客户端的列表

(8)wchs : 列出服务器watch的详细信息

(9)wchc : 通过session列出服务器watch的详细信息,它的输出是一个与watch相关的会话的列表
(10)wchp : 通过路径列出服务器watch的详细信息。它输出一个与session相关的路径
---------------------------------------------------------------------------
3、zookeeper的java客户端操作
创建一个maven项目,在pom.xml文件中添加zookeeper相关的依赖包:
<dependency>
<groupId>com.101tec</groupId>
<artifactId>zkclient</artifactId>
<version>0.10</version>
</dependency>
<dependency>
<groupId>org.apache.zookeeper</groupId>
<artifactId>zookeeper</artifactId>
<version>3.4.9</version>
</dependency>
zookeeperTest.java
import org.apache.zookeeper.CreateMode;
import org.apache.zookeeper.KeeperException;
import org.apache.zookeeper.ZooDefs;
import org.apache.zookeeper.ZooKeeper;
import org.apache.zookeeper.data.Stat; import java.io.IOException; public class zookeeperTest {
/**
* 连接到zookeeper服务,并且返回一个实例
* @param zk zookeeper引用
* @param hostPort ip地址
* @param sessionTime 超时时间
* @return zookeeper的实例
*/
private ZooKeeper startZK(ZooKeeper zk,String hostPort,int sessionTime){
try {
zk = new ZooKeeper(hostPort,sessionTime,null);
} catch (IOException e) {
e.printStackTrace();
}
return zk;
} /**
* 关闭zookeeper的连接
* @param zk zookeeper实例
*/
private void stopZK(ZooKeeper zk){
try {
zk.close();
} catch (InterruptedException e) {
e.printStackTrace();
}
} /**
* 在zookeeper上创建一个节点
* @param zk zookeeper实例
* @param nodePath 要创建的节点path
* @param nodeData 要创建的节点data
* @param cm 创建节点的Mode
*/
private void createNode(ZooKeeper zk, String nodePath, String nodeData, CreateMode cm){
try {
zk.create(nodePath,nodeData.getBytes(), ZooDefs.Ids.OPEN_ACL_UNSAFE,cm);
} catch (KeeperException e) {
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
}
} /**
* 获取zookeeper的path节点的值
* @param zk zookeeper实例
* @param nodePath 节点的值
* @return zookeeper的path节点的值
*/
private String getNode(ZooKeeper zk,String nodePath){
byte[] rets = null;
try {
rets = zk.getData(nodePath, false, new Stat());
} catch (KeeperException e) {
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
}
return new String(rets);
} public static void main(String[] args) {
zookeeperTest zkt = new zookeeperTest(); //zookeeper实例的引用
ZooKeeper zooKeeper = null; //创建一个zookeeper实例
zooKeeper = zkt.startZK(zooKeeper, "127.0.0.1:2181", 20000); //创建一个节点
zkt.createNode(zooKeeper,"/zkTest","zkDatas",CreateMode.PERSISTENT); //获取指定路径上的节点的值
String result = zkt.getNode(zooKeeper,"/zkTest"); System.out.println("result = " + result); zkt.stopZK(zooKeeper);
}
}
查看

Zookeeper的基本操作的更多相关文章
- java连接zookeeper实现zookeeper的基本操作
Java服务端连接Zookeeper,进行节点信息的获取,管理…,整理成一个基本工具, 添加依赖: <dependency> <groupId>org.apache.zooke ...
- Zookeeper:分布式程序的基石
一.目录 1.zookeeper是什么? 2.安装.配置.启动.监控 3.javaApi基础用法 4.应用场景 5.CAP理论/paxos算法 二.zookeeper简介 官方版:zookeeper是 ...
- Zookeeper注册中心底层实现小记
内容摘自微信公众号,程序员小灰.推荐-ing Zookeeper的数据模型 Zookeeper的数据模型是什么样子呢?它很像数据结构当中的树,也很像文件系统的目录. 树是由节点所组成,Zookeepe ...
- Zookeeper基本数据模型
一.Zookeeper基本数据模型 是一个树形结构,类似于前端开发中的tree.js组件 zk的数据模型也可以理解为linux/unix的文件目录 /usr/local/... 每一个节点称之为zn ...
- 【zookeeper】Apache curator的使用及zk分布式锁实现
上篇,本篇主要讲Apache开源的curator的使用,有了curator,利用Java对zookeeper的操作变得极度便捷. 其实在学之前我也有个疑虑,我为啥要学curator,撇开涨薪这些外在的 ...
- ZooKeeper(二)Java API使用
ZooKeeper官网提供了Java和C的API. 本文使用Java API来实现ZooKeeper的基本操作. 前言 下图中的Replicated Database是包含完整数据树(entire d ...
- 开始使⽤ZooKeeper的API
在之前的章节中,我们使用zkCli工具介绍了ZooKeeper的基本操作.从本章开始,我们将会看到在应用中如何通过API来进行操作.首先介绍一下如何使用ZooKeeper的API进行开发,展示如何创建 ...
- ZooKeeper服务-操作(API、集合更新、观察者、ACL)
操作 create:创建一个znode(必须要有父节点)delete:删除一个znode(该znode不能有任何子节点)exists:测试一个znode是否存在并且查询它的元数据getACL,setA ...
- ZooKeeper之初识
它是什么 俗称动物管理员,它使用java开发,开源,接口简单,高效,稳定的分布式系统,为其它分布式系统提供协调服务 为什么会存在? 开发分布式系统跟单机上做开发完全不同,碰到的问题完全不同,开发分布式 ...
随机推荐
- 【Python项目】爬取新浪微博个人用户信息页
微博用户信息爬虫 项目链接:https://github.com/RealIvyWong/WeiboCrawler/tree/master/WeiboUserInfoCrawler 1 实现功能 这个 ...
- 64_t8
trytond-account-de-skr03-4.0.0-3.fc26.noarch.rpm 12-Feb-2017 13:06 53278 trytond-account-invoice-4.0 ...
- linux终端操作快捷键
终端操作快捷键: 新建家目录下终端窗口:Ctrl+Alt+t在当期当前路径下新建终端窗口:Ctrl+Shift+n退出终端窗口:Ctrl+Shift+q 多个终端窗口之间相互切换:Tab+Alt 终端 ...
- docker centos:latest 使用 sshd
一.术语 1.容器 很多用户在接触Docker 之初都会认为容器就是一种轻量级的虚拟机,但实际上,容器和虚拟机有非常大的区别.从根本形态上来看,容器其实就是运行在操作系统上的一个进程,只不过加入了对资 ...
- Python基础二(输入与输出)
通常,一个程序都会有输入/输出,这样可以与用户进行交互.用户输入一些信息,你会对他输入的内容进行一些适当的操作,然后再输出给用户想要的结果.Python的输入/输出,我们可以用input进行输入,pr ...
- java基础34 泛型的使用
本文知识点(目录): 1.泛型的好处 2.泛型在集合中的常见应用(这里只用String类型举例) 3.在泛型中是不能使用基本数据类型,如果需要使用基本数据类型,那么就使用基本数据类型对应的 ...
- 简单的TCP接受在转发到客户端的套接口
//功能:客服端发送tcp包,服务器接受到并打印出来,并将包转换为大写后到客户端//2015.9.10成功 #include <stdio.h>#include <sys/socke ...
- 洛谷P1455搭配购买
传送门啦 这是强连通分量与背包的例题 需要注意的就是价值和价格两个数组不要打反了.. 另外 这是双向图!!! #include <iostream> #include <cstdio ...
- delphi TComponent类 2
来自:http://blog.csdn.net/lailai186/article/details/7442385 ------------------------------------------ ...
- 20165203实验四 Andriod程序设计
20165203实验四 Andriod程序设计 实验内容 安装 Android Stuidio 学习Android Stuidio调试应用程序 实验要求 1.没有Linux基础的同学建议先学习< ...