0 znode节点类型:
Znode有两种类型,短暂的(ephemeral)和持久的(persistent)
Znode的类型在创建时确定并且之后不能再修改
短暂znode的客户端会话结束时,zookeeper会将该短暂znode删除,短暂znode不可以有子节点
持久znode不依赖于客户端会话,只有当客户端明确要删除该持久znode时才会被删除
Znode有四种形式的目录节点,PERSISTENT、PERSISTENT_SEQUENTIAL、EPHEMERAL、EPHEMERAL_SEQUENTIAL
1 java代码创建上述4中znonde节点:
//持久的(以下代码只能执行一次) 只能生成节点/pp //zooKeeper.create("/pp", " ".getBytes(), ZooDefs.Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT); //zooKeeper.close(); 关闭客户端后 /pp节点依旧在zk内 //持久有序的(在/pp/下面增加一个节点,可以重复执行,父节点必须以/结尾) 这样会在 /pp/0000000000 /pp/0000000001这种方式不断生成子节点 //zooKeeper.create("/pp/", " ".getBytes(), ZooDefs.Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT_SEQUENTIAL); //zooKeeper.close(); 关闭客户端后 /pp节点依旧在zk内 查看有多少子节点: zk.getChildren //临时的(临时的下面不能有孩子) zooKeeper.create("/ee", " ".getBytes(), ZooDefs.Ids.OPEN_ACL_UNSAFE, CreateMode.EPHEMERAL); //zooKeeper.close(); 关闭客户端后 /ee节点不会在zk内 //临时有序的 for(5) //zooKeeper.create("/pp/", " ".getBytes(), ZooDefs.Ids.OPEN_ACL_UNSAFE, CreateMode.EPHEMERAL_SEQUENTIAL); thread.sleep(1000); } //zooKeeper.close(); 关闭客户端后 /ee节点和其下面的节点不会在zk内
如下是创建zk各种类型节点代码:
public static void main(String[] args) throws Exception { ZooKeeper zk = new ZooKeeper("hadoop3:2181", 9999, new Watcher() { // 监控所有被触发的事件 public void process(WatchedEvent event) { System.out.println("已经触发了" + event.getType() + "事件!"); } }); // System.out.println(zk); 执行main函数时 请打开 //System.out.println(zk.getChildren("/", false)); //zk.create("/zmtest2", "15".getBytes(), ZooDefs.Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT); /*zk.create("/zmtest3", "15".getBytes(), ZooDefs.Ids.OPEN_ACL_UNSAFE, CreateMode.EPHEMERAL); Thread.sleep(10000); // 10S内 创建的临时节点/zmtest3 存在 10S后消失 zk.close();*/ /*zk.create("/zmtest2", "15".getBytes(), ZooDefs.Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT_SEQUENTIAL); zk.close(); 执行两次下 会产生如下结果: 直接在根路径下加上流水号产生 [zmtest20000000008, zmtest20000000007, zookeeper] 这两个的值都是15 */ /* 在已经创建好永久节点/zmtest2后,循环执行如下方法2次,然后 ls /zmtest2 看到如下结果[0000000000, 0000000001] 这两个节点值也都是15 * zk.create("/zmtest2/", "15".getBytes(), ZooDefs.Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT_SEQUENTIAL); zk.close(); */ //System.out.println(zk.getData("/zmtest",false,null)); // 以字节码打印 }
maven工程见附件
1.1 上面ZooDefs下模式解释:
使用api 中预设的ACL
在创建znode时可以设置该znode的ACL列表。接口org.apache.zookeeper.ZooDefs.Ids中有一些已经设置好的权限常量,例如:
(1)、 OPEN_ACL_UNSAFE :完全开放。 事实上这里是采用了world验证模式,由于每个zk连接都有world验证模式,所以znode在设置了 OPEN_ACL_UNSAFE 时,是对所有的连接开放。
(2)、 CREATOR_ALL_ACL :给创建该znode连接所有权限。 事实上这里是采用了auth验证模式,使用sessionID做验证。所以设置了 CREATOR_ALL_ACL 时,创建该znode的连接可以对该znode做任何修改。
(3)、 READ_ACL_UNSAFE :所有的客户端都可读。 事实上这里是采用了world验证模式,由于每个zk连接都有world验证模式,所以znode在设置了READ_ACL_UNSAFE时,所有的连接都可以读该znode。
2 关于zookeeper 深入学习的连接: 推酷
http://www.tuicool.com/articles/77FJzuj
相关推荐
zookeeper的客户端使用,图形化界面查看节点信息。只需启动bat脚本,输入连接ip即可
使用JAVA代码实现zookeeper服务的节点删除功能,代码带有注释简单易懂
ZooInspector 用于查看zookeeper的节点信息 内含文件ZooInspector.zip,执行JAR包:zookeeper-dev-ZooInspector.jar
zookeeper客户端连接工具,亲测有效
Zookeeper_Java客户端Curator
通过java客户端创建zk节点,变更节点,利用zk的watcher机制测试zk集群下的数据一致性,事务锁等机制。
在 ZooKeeper 中,节点类型可以分为持久节点(PERSISTENT )、临时节点(EPHEMERAL),以及时序节点(SEQUENTIAL ),具体在节
zookeeper客户端 图形化界面zookeeper客户端 图形化界面zookeeper客户端 图形化界面zookeeper客户端 图形化界面zookeeper客户端 图形化界面
4、zookeeper的java三种客户端介绍-Curator(crud、事务操作、监听、分布式计数器、分布式锁) 网址:https://blog.csdn.net/chenwewi520feng/article/details/130288718 zookeeper常用的3种java客户端 zookeeper...
zookeeper安装包(内附客户端连接工具)
5、zookeeper的java -Curator(服务注册与发现)...该示例会涉及到本专栏下的其他文章,比如:4、zookeeper的java三种客户端介绍-Curator(crud、事务操作、监听、分布式计数器、分布式锁) 等文章,都是在该专栏下的。
ZKInspector:zookeeper节点管理工具,可以很方便地增删改查ZK集群当前的节点状态
zookeeper客户端。分布式锁。 demo。。
ZooKeeper 客户端的使用(二).
快速查看zookeeper内容 ,git 地址 https://github.com/vran-dev/PrettyZoo/releases 能够记录zookeeper密码 支持内容修改
java客户端使用api访问zookeeper,增删改查Znode,多有的操作都有同步和异步的方式,代码简单,易懂
简单、高效的Zookeeper Java客户端。 让Zookeeper API 使用起来更简单 非常方便订阅各种事件并自动重新绑定事件(会话建立、节点修改、节点删除、子节点变更等) session过期自动重连、机制 快速入门 下面部分...
zookeeper节点数据的监听与读写操作
Zookeeper单节点注册中心