栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Zookeeper基本使用

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Zookeeper基本使用

命令行操作
API使用

命令行操作

首先进入zookeeper客户端

cd /bin
./zkCli.sh
  • ./zkClis.sh 指连接本地的zookeeper服务器
  • ./zkCli.sh -server ip:port 指连接指定的服务器
创建节点

命令介绍
create -s -e path data acl

-s 指顺序节点
-e 指临时节点 
path 指路径,以/开头
data 指数据内容
acl 指进行权限控制

创建持久性顺序节点

create -s /zk_test 123

创建持久性节点

create /zk_test 123

创建临时顺序节点

create -s -e /zk_test 123456


因为zk_test00006是临时节点,可以通过 quit 结束当前会话后,再次进入,查看验证


读取节点

命令介绍
ls path 为查看指定路径下的下一级节点->并非所有节点
如图:ls / 只能查看到 /b和/c 查看不到 /b1和/b2

get path可以获取指定节点下的数据内容

stat path可以查看指定节点的状态信息

  • cZxid 指节点被创建时的事务ID
  • ctime 指创建节点的时间
  • mZxid 指节点最后一次被修改时的事务ID
  • mtime 指节点最后一次被修改的时间
  • pZxid 表示该节点的子节点列表最后一次被修改时的事务ID.只有子节点列表更新才会更新pZid,子节点内容更新不会更新.
  • cversion 指子节点的版本号
  • dataVersion 指内容版本号
  • aclVersion 指acl版本
  • ephemeralOwner 指创建该临时节点时的会话 sessionId,如果持久性节点name值为0
  • dataLength 指数据长度
  • numChildren 指直系子节点个数

更新节点

命令介绍
set path data [version]

path 节点路径
data 更新内容
version 非必填 版本号


删除节点

delete paht 删除指定路径的节点,如果该节点下存在子节点,将无法删除,需要先将子节点删除后才能够删除


API使用

导入jar,版本和zookeeper一致


    org.apache.zookeeper
    zookeeper
    3.7.1

创建会话
public class CreateSession implements Watcher {

    private static CountDownLatch countDownLatch = new CountDownLatch(1);

    public static void main(String[] args) throws IOException, InterruptedException {

        

        String ipAndPort = "192.168.171.128:2181";

        ZooKeeper zooKeeper = new ZooKeeper(ipAndPort, 5000, new CreateSession());
        System.out.println(zooKeeper.getState());

        //计数工具类,不让main方法结束,让线程处于阻塞状态
        countDownLatch.await();
        System.out.println("连接成功...");
    }

    
    @Override
    public void process(WatchedEvent event) {
        if (event.getState() == Event.KeeperState.SyncConnected) {
            System.out.println("调用...");
            countDownLatch.countDown();
        }
    }
}


创建节点
String nodeNamePersistent = zooKeeper.create("/zy_persistent", "持久节点".getBytes(), ZooDefs.Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT);
String nodeNamePersistentSequential = zooKeeper.create("/zy_persistent_sequential", "持久顺序节点".getBytes(), ZooDefs.Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT_SEQUENTIAL);
String nodeNameEphemeral = zooKeeper.create("/zy_ephemeral", "临时节点".getBytes(), ZooDefs.Ids.OPEN_ACL_UNSAFE, CreateMode.EPHEMERAL);
System.out.println("持久节点 " + nodeNamePersistent);
System.out.println("持久顺序节点 " + nodeNamePersistentSequential);
System.out.println("临时节点 " + nodeNameEphemeral);


获取节点数据
byte[] data = zooKeeper.getData("/zy_persistent", false, null);
System.out.println(new String(data));


获取某个节点的子节点
 
List children = zooKeeper.getChildren("/", true);
System.out.println(children);


更新某个节点的内容
        byte[] data = zooKeeper.getData("/zy_test01", false, null);
        System.out.println("修改前的节点内容: " + new String(data));
        
        zooKeeper.setData("/zy_test01", "修改内容111".getBytes(), -1);
        byte[] data1 = zooKeeper.getData("/zy_test01", false, null);
        System.out.println("修改后的节点内容: " + new String(data1));


删除节点
        
        String nodeName = "/zy_test01";
        if (zooKeeper.exists(nodeName, false) != null) {
            System.out.println("删除节点前: " + zooKeeper.getChildren("/", false));
            zooKeeper.delete(nodeName, -1);
            System.out.println("删除 " + nodeName + " 节点成功!");
            System.out.println("删除节点后: " + zooKeeper.getChildren("/", false));
        } else {
            System.out.println(nodeName + " 节点不存在!");
        }


点击获取代码

其他章节 -> 跳转

end...
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1031638.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号