Zookeeper通过java创建、查看、修改、删除znode
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Zookeeper通过java创建、查看、修改、删除znode,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3673字,纯文字阅读大概需要6分钟。
内容图文
![Zookeeper通过java创建、查看、修改、删除znode](/upload/InfoBanner/zyjiaocheng/1157/2e7944361666470099e3460ee63af36b.jpg)
本章主要介绍zookeeper如何使用,其实通过zkCli.cmd我们是可以执行一些操作的:
声明:参考及转自《http://www.blogjava.net/BucketLi/archive/2010/12/21/341268.html》
- 通过zkCli.cmd来操作zookeeper:
进入D:\Work\zookeeper\zookeeper-3.4.8\bin的路径下,在cmd下输入命令:zkCli.sh –server 127.0.0.1:2182,之后通过help命令可以查看到zkClient工具提供了以下操作命令。
[zk: 127.0.0.1:2181(CONNECTED) 10] help ZooKeeper -server host:port cmd args stat path [watch] set path data [version] ls path [watch] delquota [-n|-b] path ls2 path [watch] setAcl path acl setquota -n|-b val path history redo cmdno printwatches on|off delete path [version] sync path listquota path rmr path get path [watch] create [-s] [-e] path data acl addauth scheme auth quit getAcl path close connect host:port [zk: 127.0.0.1:2181(CONNECTED) 11]
ls(查看当前节点数据),
ls2(查看当前节点数据并能看到更新次数等数据) ,
create(创建一个节点) ,
get(得到一个节点,包含数据和更新次数等数据),
set(修改节点)
delete(删除一个节点)
通过上述命令实践,发现zookeeper使用了一个类似文件系统的树结构,数据可以挂在某个节点上,可以对这个节点进行删改。另外我们还发现,当改动一个节点的时候,集群中活着的机器都会更新到一致的数据(这里都是通过zkCli.cmd连接到任意一个zkServer时,通过查看数据时发现)。
- Zookeeper的数据存储结构
通过ls /{目录}命令查看那zk的数据存储结构,可以发现其数据结构有些像操作系统的文件结构,结构如下图所示:
(1) 每个节点在zookeeper中叫做znode,并且其有一个唯一的路径标识,如/SERVER2节点的标识就为/APP3/SERVER2
(2) Znode可以有子znode,并且znode里可以存数据,但是EPHEMERAL类型的节点不能有子节点
(3) Znode中的数据可以有多个版本,比如某一个路径下存有多个数据版本,那么查询这个路径下的数据就需要带上版本。
(4) znode 可以是临时节点,一旦创建这个 znode 的客户端与服务器失去联系,这个 znode 也将自动删除,Zookeeper 的客户端和服务器通信采用长连接方式,每个客户端和 服务器通过心跳来保持连接,这个连接状态称为 session,如果 znode 是临时节点,这个 session 失效,znode 也就删除了
(5) znode 的目录名可以自动编号,如 App1 已经存在,再创建的话,将会自动命名为 App2
(6) znode 可以被监控,包括这个目录节点中存储的数据的修改,子节点目录的变化等,一旦变化可以通知设置监控的客户端,这个功能是zookeeper对于应用最重要的特性,通过这个特性可以实现的功能包括配置的集中管理,集群管理,分布式锁等等。
- 通过java来实现zkCiient连接zkServer:
1)使用eclipse做为开发测试的ide,通过maven构建一个Java project
maven引入zookeeper的jar:
< dependency > < groupId >org.apache.zookeeper</groupId><artifactId>zookeeper</artifactId><version>3.4.8</version></dependency>
2)编写测试代码:
1 package com.dx.zktest; 2 3 import java.util.List; 4 import java.io.IOException; 5 6 import org.apache.zookeeper.CreateMode; 7 import org.apache.zookeeper.KeeperException; 8 import org.apache.zookeeper.WatchedEvent; 9 import org.apache.zookeeper.Watcher; 10 import org.apache.zookeeper.ZooDefs.Ids; 11 import org.apache.zookeeper.ZooKeeper; 12 13 /** 14 * Hello world! 15 * 16 */ 17 public class ZkClient { 18 public static void main(String[] args) throws IOException, KeeperException, InterruptedException { 19// 创建一个Zookeeper实例,第一个参数为目标服务器地址和端口,第二个参数为Session超时时间,第三个为节点变化时的回调方法20 ZooKeeper zk = new ZooKeeper("127.0.0.1:2181", 500000, new Watcher() { 21// 监控所有被触发的事件22publicvoid process(WatchedEvent event) { 23// dosomething24 System.out.println("watcher event fire..."); 25 } 26 }); 2728// 创建一个节点root,数据是mydata,不进行ACL权限控制,节点为永久性的(即客户端shutdown了也不会消失)29 zk.create("/root", "mydata".getBytes(), Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT); 3031// 在root下面创建一个childone znode,数据为childone,不进行ACL权限控制,节点为永久性的32 zk.create("/root/childone", "childone".getBytes(), Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT); 3334// 取得/root节点下的子节点名称,返回List<String>35 List<String> rootItems = zk.getChildren("/root", true); 36 System.out.println("print /root..."); 37for (String item : rootItems) { 38 System.out.println(item); 39 } 4041// 取得/root/childone节点下的数据,返回byte[]42byte[] bytes = zk.getData("/root/childone", true, null); 43 System.out.println(new String(bytes)); 4445// 修改节点/root/childone下的数据,第三个参数为版本,如果是-1,那会无视被修改的数据版本,直接改掉46 zk.setData("/root/childone", "childonemodify".getBytes(), -1); 4748// 删除/root/childone这个节点,第二个参数为版本,-1的话直接删除,无视版本49 zk.delete("/root/childone", -1); 5051// 关闭session52 zk.close(); 53 } 54 }
使用zkCli.cmd监控服务器节点变化情况:
原文:http://www.cnblogs.com/yy3b2007com/p/7499914.html
内容总结
以上是互联网集市为您收集整理的Zookeeper通过java创建、查看、修改、删除znode全部内容,希望文章能够帮你解决Zookeeper通过java创建、查看、修改、删除znode所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。