zookeeper使用02--基本命令

摘要:
1、zookeeper的应用:注册中心、配置集中管理、集群管理、分布式锁和分布式任务、队列的管理。

1、zookeeper的应用:

注册中心、配置集中管理、集群管理、分布式锁和分布式任务、队列的管理。

2、zookeeper的znode类型:

持久节点:永久保存数据。

持久有序节点:永久保存数据,会给节点添加一个有序的序号。

临时节点:当客户端和zookeeper断开连接时,节点自动删除。

临时有序节点:断开连接时自动删除,会给节点添加有序的序号。

3、zookeeper的监听通知机制:

客户端可以监听zookeeper的znode节点,znode改变时会通知客户端。

4、zookeeper的常用命令:

4.1查询

#查询当前节点下的全部子节点
ls 节点名称 #ls /
#查询当前节点下的数据
get 节点名称 #get /zookeeper

4.2创建

create [-s] [-e] znode名称 znode数据
#参数-s:加上-s表示有序#参数-e:加上-e表示临时节点

4.3修改

set znode节点 znode数据

4.4删除

delete znode名称 #没有子节点的znode
deleteall znode名称 #删除当前节点和其全部子节点,新版本命令是rmr

5、使用Java访问Zookeeper:

5.1 使用IDEA创建maven工程

5.2 导入依赖,pom文件为:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.yas</groupId>
    <artifactId>zkDemo</artifactId>
    <version>1.0-SNAPSHOT</version>
    <dependencies>
        <dependency>
            <groupId>org.apache.zookeeper</groupId>
            <artifactId>zookeeper</artifactId>
            <version>3.6.0</version>
        </dependency>
        <dependency>
            <groupId>org.apache.curator</groupId>
            <artifactId>curator-recipes</artifactId>
            <version>4.0.1</version>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
            <scope>test</scope>
        </dependency>
    </dependencies>
    <properties>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>
    </properties>
</project>

5.3 添加配置类:

1 packagecom.yas;
2 
3 importorg.apache.curator.RetryPolicy;
4 importorg.apache.curator.framework.CuratorFramework;
5 importorg.apache.curator.framework.CuratorFrameworkFactory;
6 importorg.apache.curator.retry.ExponentialBackoffRetry;
7 
8 public classZkUtil {
9 
10     public staticCuratorFramework cf(){
11         RetryPolicy retryPolicy = new ExponentialBackoffRetry(3000,2);
12         CuratorFramework cf =CuratorFrameworkFactory.builder()
13                 .connectString("127.0.0.1:2181")
14 .retryPolicy(retryPolicy)
15 .build();
16 cf.start();
17         returncf;
18 }
19 }

5.4 测试:

1 importcom.yas.ZkUtil;
2 importorg.apache.curator.framework.CuratorFramework;
3 importorg.apache.zookeeper.CreateMode;
4 importorg.apache.zookeeper.data.Stat;
5 importorg.junit.Test;
6 
7 importjava.util.List;
8 
9 public classTest01 {
10     //连接
11     //@Test
12 //public void connect(){
13 //CuratorFramework cf = ZkUtil.cf();
14 //System.out.println(cf);
15 //}
16 
17     CuratorFramework cf =ZkUtil.cf();
18 
19 @Test
20     public void selectZnodeh() throwsException {
21         final List<String> strings = cf.getChildren().forPath("/");
22         for(String str: strings) {
23 System.out.println(str);
24 }
25         //dubbo
26         //zookeeper
27 }
28 
29 @Test
30     public void getData() throwsException {
31         byte[] bytes = cf.getData().forPath("/dubbo");
32         System.out.println(new String(bytes,"UTF-8"));
33         //192.168.0.101
34 }
35 
36 @Test
37     public void getStat() throwsException{
38         final Stat stat = cf.checkExists().forPath("/dubbo");
39 System.out.println(stat);
40         //212,212,1635987213053,1635987213053,0,2,0,0,13,2,236
41 }
42 
43 @Test
44     public void create() throwsException {
45         cf.create().withMode(CreateMode.PERSISTENT).forPath("/yas","asen".getBytes());
46 }
47     
48 @Test
49     public void update() throwsException{
50         cf.setData().forPath("/yas","asenyang".getBytes());
51 }
52 
53 @Test
54     public void delete() throwsException{
55         cf.delete().deletingChildrenIfNeeded().forPath("/yas");
56 }
57 }

关于监听通知机制(watch机制):

1 importcom.yas.ZkUtil;
2 importorg.apache.curator.framework.CuratorFramework;
3 importorg.apache.curator.framework.recipes.cache.NodeCache;
4 importorg.apache.curator.framework.recipes.cache.NodeCacheListener;
5 importorg.apache.zookeeper.data.Stat;
6 importorg.junit.Test;
7 
8 public classTest02 {
9     CuratorFramework cf =ZkUtil.cf();
10 
11 @Test
12     public void listen() throwsException {
13         //1.创建NodeCache对象,指定要监听的znode
14         NodeCache nodeCache = new NodeCache(cf,"/yas");
15 nodeCache.start();
16         //2.添加一个监听器
17         nodeCache.getListenable().addListener(newNodeCacheListener() {
18 @Override
19             public void nodeChanged() throwsException {
20                 final byte[] data =nodeCache.getCurrentData().getData();
21                 final Stat stat =nodeCache.getCurrentData().getStat();
22                 final String path =nodeCache.getCurrentData().getPath();
23 
24                 System.out.println("监听的节点是:"+path);
25                 System.out.println("节点现在的数据是:"+new String(data,"UTF-8"));
26                 System.out.println("节点的状态是:"+stat);
27 }
28 });
29 
30         System.out.println("监听已经启动");
31         //3.System.in.Read();
32 System.in.read();
33 }
34 }

当/yas 节点的值被修改后,会自动触发watch机制。

效果如下:

zookeeper使用02--基本命令第1张

免责声明:文章转载自《zookeeper使用02--基本命令》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Log4j 2 配置RAID 磁盘阵列 详解下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

kafka 基础知识梳理-kafka是一种高吞吐量的分布式发布订阅消息系统

一、kafka 简介 今社会各种应用系统诸如商业、社交、搜索、浏览等像信息工厂一样不断的生产出各种信息,在大数据时代,我们面临如下几个挑战: 如何收集这些巨大的信息 如何分析它 如何及时做到如上两点 以上几个挑战形成了一个业务需求模型,即生产者生产(produce)各种信息,消费者消费(consume)(处理分析)这些信息,而在生产者与消费者之间,需要...

zookeeper和duboo 没用

什么是dubboDubbo是阿里巴巴SOA服务化治理方案的核心框架,是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案。 测试和生产公用一套zookeeper,怎么保证消费不冲突 1 dubbo白名单(Filter过滤器) 服务分组 <!--服务--> <dubbo:service gr...

zookeeper安装以及遇到的一些坑

 正文前先来一波福利推荐: 福利一: 百万年薪架构师视频,该视频可以学到很多东西,是本人花钱买的VIP课程,学习消化了一年,为了支持一下女朋友公众号也方便大家学习,共享给大家。 福利二: 毕业答辩以及工作上各种答辩,平时积累了不少精品PPT,现在共享给大家,大大小小加起来有几千套,总有适合你的一款,很多是网上是下载不到。 获取方式: 微信关注 精品3分钟...

快速搭建Hadoop及HBase分布式环境

本文旨在快速搭建一套Hadoop及HBase的分布式环境,自己测试玩玩的话ok,如果真的要搭一套集群建议还是参考下ambari吧,目前正在摸索该项目中。下面先来看看怎么快速搭建一套分布式环境。 准备 三台虚拟机:1台作为NameNode和HMaster 两台作为DataNode和HRegionServer。同时三台都安装zookeeper。 Hadoop...

zookeeper 日志输出到指定文件夹

最近在研究Zookeeper Storm Kafka, 顺便在本地搭了一套集群, 遇到了Zookeeper日志问题输出路径的问题, 发现zookeeper设置log4j.properties不能解决日志路径问题, 发现解决方案如下: 1. 修改log4j.properties, 这个大家都应该会改, 红色加粗处是我修改的, 但是改了这边还是不生效 #...

linux上kafka搭建小结

1、安装java yum -y list java 可以查看java的版本,然后选1.8的64位那个安装 yum install java_1.8.0_openjdk.x86_64 或者从网站下载安装 tar -zxvf jre-8u271-linux-x64.tar.gzmkdir /usr/lib/jvmmv jre-8u271-linux-x64 /...