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开发,开源,接口简单,高效,稳定的分布式系统,为其它分布式系统提供协调服务 为什么会存在? 开发分布式系统跟单机上做开发完全不同,碰到的问题完全不同,开发分布式 ...
随机推荐
- 【hihocoder1251】Today is a rainy day
#include<bits/stdc++.h> ; ; const int inf=0x3f3f3f3f; using namespace std; char s1[N],s2[N]; ] ...
- 八、springcloud之服务网关zuul(一)
一.Zuul简介 zuul 是netflix开源的一个API Gateway 服务器, 本质上是一个web servlet应用. Zuul是Netflix出品的一个基于JVM路由和服务端的负载均衡器. ...
- nodejs 接收上传的图片
1.nodejs接收上传的图片主要是使用formidable模块,服务器是使用的express搭建. 引入formidable var formidable = require('./node_mod ...
- Flask:初见
Windows 10家庭中文版,Python 3.6.4 从Flask官网开始学起. 介绍 Flask是一个Python的Web开发微框架,基于Werkzeug.Jinja2模块(and good i ...
- HTML5 localStorage、sessionStorage 作用域
一.localStorage localStorage有效期:永不失效,除非web应用主动删除. localStorage作用域:localStorage的作用域是限定在文档源级别的.文档源通过协议. ...
- 转:vue-cli的webpack模板项目配置文件分析
转载地址:http://blog.csdn.net/hongchh/article/details/55113751 一.文件结构 本文主要分析开发(dev)和构建(build)两个过程涉及到的文件, ...
- 工具类DateHandler
package com.ctid.rachel.core.util; import java.math.BigDecimal;import java.util.Calendar;import java ...
- Centos之命令搜索命令whereis与which
Centos之命令搜索命令whereis与which whereis 命令名 #搜索命令所在路径及帮助文档所在位置 选项: -b :只查找可执行文件位置 -m:只查找帮助文件 [root@localh ...
- 触发器中的inserted表和deleted表
触发器语句中使用了两种特殊的表:deleted 表和 inserted 表.Microsoft? SQL Server 2000 自动创建和管理这些表.可以使用这两个临时的驻留内存的表测试某些数据修改 ...
- 如何使用django+celery+RabbitMQ实现异步执行
1)安装需要安装RabbitMQ.Celery和Django-celeryCelery和Django-celery的安装直接pip就好 2)修改settings.py在INSTALLED_APPS中加 ...