zookeeper的JAVA API使用

发布时间:2022-07-05 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了zookeeper的JAVA API使用脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

1.创建连接

zookeeper的JAVA API使用

 2.创建节点

zookeeper的JAVA API使用

 3.监听信息

watcher.class

zookeeper的JAVA API使用

4.获取节点

stat stat = new Stat();

zk.getData(Path,true,stat);

5.修改节点数据

-1表示忽略版本

zk.setData("/test1", "testok".getBytes(), -1);

6.删除节点

可以删除多级目录

zk.setData("/test1", "testok".getBytes(), -1)

 

完整代码如下

package zookeePEr;

import org.apache.zookeeper.*;
import org.apache.zookeeper.data.Stat;
import org.junIT.Before;
import org.junit.Test;

import java.io.IOException;
import java.util.Arrays;

public class Demo1 {
        //创建连接
        ZooKeeper zk = null;
        @Before
        public void connect() {
            try {
                zk = new ZooKeeper(
                        "master:2181,node1:2181,node2:2181",
                        8000,
                        null);
            } catch (IOException e) {
                e.PRintStackTrace();
            }
        }

        @Test
        //创建永久性节点
        public void creat1(){
            try {
                zk.create("/test1","testone".getBytes(),ZooDefs.Ids.OPEN_ACL_UNSAFE,CreateMode.PERSISTENT);
            } catch (KeeperException e) {
                e.printStackTrace();
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }

        @Test
        //创建临时节点,会话断开或sessionTimeout时间过期会消失
        public void creat2() {
            try {
                zk.create("/test2", "testtwo".getBytes(), ZooDefs.Ids.OPEN_ACL_UNSAFE, CreateMode.EPHEMERAL);
                //可以通过加死循环阻塞
            } catch (KeeperException e) {
                e.printStackTrace();
            } catch (InterruptedException e) {
                e.printStackTrace();
            }

        }

        @Test
        public void watch(){
            try {
                zk.getChildren("/test2", new Watcher() {
                    public void process(WatchedEvent watchedEvent) {
                        System.out.println("节点挂了");
                        System.out.println(watchedEvent); //使用Watcher类中的枚举
                    }
                });
            } catch (KeeperException e) {
                e.printStackTrace();
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            //监听一直运行
            while (true){

            }
        }

        @Test
        public void getnode(){
            try {
                byte[] data = zk.getData("/test1", true, new Stat());
                System.out.println(Arrays.toString(data));
                //输出结果 [116, 101, 115, 116, 111, 110, 101]

            } catch (KeeperException e) {
                e.printStackTrace();
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }

        @Test
        public void setnode(){
            try {
                //-1表示忽略版本
                zk.setData("/test1", "testok".getBytes(), -1);
            } catch (KeeperException e) {
                e.printStackTrace();
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }

    }

 Zookeeper简介:

Zookeeper集群中节点个数一般为奇数个(>=3),若集群中Master挂掉,剩余节点个数在数以上时,就可以推举新的主节点,继续对外提供服务。

Zookeeper默认对外提供服务的端口号为2181

Zookeeper集群内部3个节点之间通信默认使用2888:3888

 

脚本宝典总结

以上是脚本宝典为你收集整理的zookeeper的JAVA API使用全部内容,希望文章能够帮你解决zookeeper的JAVA API使用所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。