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

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

参考内容:

  《私塾在线》,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. 【hihocoder1251】Today is a rainy day

    #include<bits/stdc++.h> ; ; const int inf=0x3f3f3f3f; using namespace std; char s1[N],s2[N]; ] ...

  2. 八、springcloud之服务网关zuul(一)

    一.Zuul简介 zuul 是netflix开源的一个API Gateway 服务器, 本质上是一个web servlet应用. Zuul是Netflix出品的一个基于JVM路由和服务端的负载均衡器. ...

  3. nodejs 接收上传的图片

    1.nodejs接收上传的图片主要是使用formidable模块,服务器是使用的express搭建. 引入formidable var formidable = require('./node_mod ...

  4. Flask:初见

    Windows 10家庭中文版,Python 3.6.4 从Flask官网开始学起. 介绍 Flask是一个Python的Web开发微框架,基于Werkzeug.Jinja2模块(and good i ...

  5. HTML5 localStorage、sessionStorage 作用域

    一.localStorage localStorage有效期:永不失效,除非web应用主动删除. localStorage作用域:localStorage的作用域是限定在文档源级别的.文档源通过协议. ...

  6. 转:vue-cli的webpack模板项目配置文件分析

    转载地址:http://blog.csdn.net/hongchh/article/details/55113751 一.文件结构 本文主要分析开发(dev)和构建(build)两个过程涉及到的文件, ...

  7. 工具类DateHandler

    package com.ctid.rachel.core.util; import java.math.BigDecimal;import java.util.Calendar;import java ...

  8. Centos之命令搜索命令whereis与which

    Centos之命令搜索命令whereis与which whereis 命令名 #搜索命令所在路径及帮助文档所在位置 选项: -b :只查找可执行文件位置 -m:只查找帮助文件 [root@localh ...

  9. 触发器中的inserted表和deleted表

    触发器语句中使用了两种特殊的表:deleted 表和 inserted 表.Microsoft? SQL Server 2000 自动创建和管理这些表.可以使用这两个临时的驻留内存的表测试某些数据修改 ...

  10. 如何使用django+celery+RabbitMQ实现异步执行

    1)安装需要安装RabbitMQ.Celery和Django-celeryCelery和Django-celery的安装直接pip就好 2)修改settings.py在INSTALLED_APPS中加 ...