写在前面的话:读书破万卷,编码如有神

--------------------------------------------------------------------

参考内容:

  《私塾在线》,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的基本操作的更多相关文章

  1. java连接zookeeper实现zookeeper的基本操作

    Java服务端连接Zookeeper,进行节点信息的获取,管理…,整理成一个基本工具, 添加依赖: <dependency> <groupId>org.apache.zooke ...

  2. Zookeeper:分布式程序的基石

    一.目录 1.zookeeper是什么? 2.安装.配置.启动.监控 3.javaApi基础用法 4.应用场景 5.CAP理论/paxos算法 二.zookeeper简介 官方版:zookeeper是 ...

  3. Zookeeper注册中心底层实现小记

    内容摘自微信公众号,程序员小灰.推荐-ing Zookeeper的数据模型 Zookeeper的数据模型是什么样子呢?它很像数据结构当中的树,也很像文件系统的目录. 树是由节点所组成,Zookeepe ...

  4. Zookeeper基本数据模型

    一.Zookeeper基本数据模型 是一个树形结构,类似于前端开发中的tree.js组件 zk的数据模型也可以理解为linux/unix的文件目录  /usr/local/... 每一个节点称之为zn ...

  5. 【zookeeper】Apache curator的使用及zk分布式锁实现

    上篇,本篇主要讲Apache开源的curator的使用,有了curator,利用Java对zookeeper的操作变得极度便捷. 其实在学之前我也有个疑虑,我为啥要学curator,撇开涨薪这些外在的 ...

  6. ZooKeeper(二)Java API使用

    ZooKeeper官网提供了Java和C的API. 本文使用Java API来实现ZooKeeper的基本操作. 前言 下图中的Replicated Database是包含完整数据树(entire d ...

  7. 开始使⽤ZooKeeper的API

    在之前的章节中,我们使用zkCli工具介绍了ZooKeeper的基本操作.从本章开始,我们将会看到在应用中如何通过API来进行操作.首先介绍一下如何使用ZooKeeper的API进行开发,展示如何创建 ...

  8. ZooKeeper服务-操作(API、集合更新、观察者、ACL)

    操作 create:创建一个znode(必须要有父节点)delete:删除一个znode(该znode不能有任何子节点)exists:测试一个znode是否存在并且查询它的元数据getACL,setA ...

  9. ZooKeeper之初识

    它是什么 俗称动物管理员,它使用java开发,开源,接口简单,高效,稳定的分布式系统,为其它分布式系统提供协调服务 为什么会存在? 开发分布式系统跟单机上做开发完全不同,碰到的问题完全不同,开发分布式 ...

随机推荐

  1. java map遍历并删除特定值

    删除map中包含password和username的键值对 若是在map中直接删除,会指针错误 Iterator<Map.Entry<String,Object>> it = ...

  2. C 之回调函数

    软件模块之间总是存在着一定的接口,从调用方式上,可以把他们分为三类:同步调用.回调和异步调用.同步调用是一种阻塞式调用,调用方要等待对方执行完毕才返回,它是一种单向调用:回调是一种双向调用模式,也就是 ...

  3. linux arm的存储分布那些事之一【转】

    转自:http://blog.csdn.net/xiaojsj111/article/details/11724081 linux arm的存储分布那些事之一 linux arm 内存分布总览 上图是 ...

  4. select()函数用法二

    Select在Socket编程中还是比较重要的,可是对于初学Socket的人来说都不太爱用Select写程序,他们只是习惯写诸如 connect.accept.recv或recvfrom这样的阻塞程序 ...

  5. 安装virtualenv(Scrapy)

    Windows 10家庭中文版,Python 3.6.4, virtualenv用来提供一个应用程序独立的 运行环境,这个独立是相对于系统的Python运行环境而言,开发者可以在virtualenv建 ...

  6. Python 内置装饰器

    内置的装饰器 ​ 内置的装饰器和普通的装饰器原理是一样的,只不过返回的不是函数,而是类对象,所以更难理解一些. @property ​ 在了解这个装饰器前,你需要知道在不使用装饰器怎么写一个属性. d ...

  7. sem_open中信号量命名

    问题: sem_open will failed with "No such file or directory"   解释1: 这是由于在Linux内核中,创建信号量的默认路径是 ...

  8. es6遍历数组forof

  9. SQL2000数据库修改sa密码

    开始——程序——Microsoft SQL Server——企业管理器 2 展开数据库Microsoft SQL Server—— SQL Server组——安全性——登录——双击sa 3 在常规内有 ...

  10. XML&反射

    本节内容: XML DTD约束 Schema约束 dom4j解析 反射 为了实现访问不同路径(/hello)执行不同的资源(HelloMyServlet),我们需要使用XML进行配置:为了限定XML内 ...