zookeeper-集群操作

集群配置

大佬

命令

查看

# 启动客户端
bin.zkCli.sh

# 显示所有操作
help

# 查看当前znode中所包含的内容
ls /
# 查看详细的
ls2 /

# 查看节点状态
stat /threeKim

创建节点

# 创建普通节点(3.5之后不用加信息也可以)
create /threeKim "han"
create /threeKim/shuguo "zgl"

# 获得节点的值(3.5之后+s)
# 客户端若可以获得值,则说明节点服务器存在
get /threeeKim

====================================
# 创建短暂节点 客户端断开即销毁
create -e /threeKim/wuguo "zhouyu"

===================================
# 创建带序号的节点 weiguo0000000004
# 尾部带序号,值为当前路径所有节点数(即本身是该路径下第几个)
create -s /threeKim/weiguo "simayi"

修改节点

# 修改节点的值
set /ThreeKim/weiguo "cc"

变化监听

# 不同客户端监听节点的值的变化,只生效一次
get /threeKim/weiguo watch

# 不同客户端监听路径的变化,只生效一次
ls /threeKim watch

删除节点

delete /threeKim/weiguo

# 递归删除
rmr /threeKim

Stat结构体

在这里插入图片描述

API

  1. pom.xml
<dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <version>4.12</version>
    <scope>test</scope>
</dependency>
<dependency>
    <groupId>org.apache.logging.log4j</groupId>
    <artifactId>log4j-core</artifactId>
    <version>2.7</version>
</dependency>
<dependency>
    <groupId>org.apache.zookeeper</groupId>
    <artifactId>zookeeper</artifactId>
    <version>3.4.14</version>
</dependency>
  1. log4j.properties
# 日志级别:DEBUG<INFO<WARN<ERROR
log4j.rootLogger=INFO,stdout
log4j.logger.mapper=DEBUG
# 下面的一般照抄
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n
  1. 代码部分
//zk集群,在zoo.cfg中设置的
private String connectString = "192.168.199.132:2181,192.168.199.133:2181,192.168.199.134:2181";
//超时时间,2s内连不上失败
private int sessionTimeout = 200000;
private ZooKeeper zkClient;
@Before
public void init() throws IOException {
        zkClient = new ZooKeeper(connectString, sessionTimeout, new Watcher() {
        //监听器回调方法
        public void process(WatchedEvent watchedEvent) {
            List<String> children;
            try {
                children= zkClient.getChildren("/", true);
                System.out.println("==============");
                for (String child : children) {
                    System.out.println(child);
                }
            } catch (KeeperException e) {
                e.printStackTrace();
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    });
}

// 1. 创建节点
@Test
public void createNode() throws KeeperException, InterruptedException {
    // 添加的路径
    String path = "/IDEA/son";
    // 节点信息
    byte[] bytes = "cjA".getBytes();
    // Ids:权限控制
    // CreateMode:4种节点类型
    String result = zkClient.create(path, bytes, ZooDefs.Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT);
    System.out.println(result);
}

// 2. 获取子节点 并监控数据的变化
@Test
public void getDataAndWatch() throws KeeperException, InterruptedException {
    //true时会监听一次,变化时调用监听器process()方法
    List<String> children = zkClient.getChildren("/", true);
    for (String child : children) {
        System.out.println(child);
    }
    TimeUnit.SECONDS.sleep(2000000);
}

// 3. 判断节点是否存在
@Test
public void exist() throws KeeperException, InterruptedException {
    Stat exists = zkClient.exists("/IDE2A", false);
    System.out.println(exists != null);
}

监听服务器动态上下线

  1. 案例展示
    在这里插入图片描述

AA

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值