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

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

参考内容:

  《私塾在线》,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);
}
}

查看

最新文章

  1. Writing Clean Code 读后感
  2. PowerShell vs. PsExec for Remote Command Execution
  3. [原]centos6.5系统可用yum源(32位)以及rpmforge
  4. 算法手记 之 数据结构(并查集详解)(POJ1703)
  5. 无法定位序数4369于动态链接库libeay32.dll
  6. java对象equals方法的重写
  7. Phpstorm Xdebug Web程序调试
  8. Oracle 常用操作
  9. [MySQL] MySQL的自己主动化安装部署
  10. [HttpClient]传递参数
  11. Struts2请求处理流程及源码分析
  12. 数据库分库分表(sharding)系列(四) 多数据源的事务处理
  13. 【知识整理】这可能是最好的RxJava 2.x 入门教程(四)
  14. file-loader 使用心得
  15. rsync服务器的搭建
  16. Php显示中文时乱码
  17. ZJOI2019一轮游记
  18. The SOLID principles(未完,待续)
  19. Android开发训练之第五章第三节——Transferring Data Without Draining the Battery
  20. 【Excel】如何用SUMIF实现SUMIFS的功能

热门文章

  1. linux shell语言编程规范安全篇之通用原则【转】
  2. Python之协程(coroutine)
  3. JAVA中分为基本数据类型和引用数据类型区别
  4. 规范命名CSS
  5. ZOJ 3781 Paint the Grid Reloaded(DFS连通块缩点+BFS求最短路)
  6. 每位架构师都应该熟知的 10 个 SOA 设计模式
  7. R语言学习笔记:choose、factorial、combn排列组合函数
  8. MIT6.006Lec01:Python实现
  9. 在jenkins里使用SCM管理jenkinsfile
  10. Hive(七)Hive分析窗口函数