Zookeeper学习:Zookeeper 的 API 使用

本文介绍了Zookeeper作为分布式框架的API使用,包括建立会话、创建节点、获取及修改节点数据、删除节点等关键操作。通过Zookeeper的客户端主要类ZooKeeper,详细讲解了与Zookeeper服务端建立连接、维持会话以及执行各种操作的流程。
摘要由CSDN通过智能技术生成

1. API 相关介绍

Zookeeper作为一个分布式框架,主要用来解决分布式一致性问题,它提供了简单的分布式原语,并且对多种编程语言提供了APl,Zooeeper API 共包含五个包,分别为∶

  • org.apache.zookeeper
  • org.apache.zookeeper.data
  • org.apache.zookeeper.server
  • org.apache.zookeeper. server.quorum
  • org.apache.zookeeper.server.upgrade

其中 org.apache.zookeeper,包含Zookeeper类,它是编程时最常用的类文件。这个类是Zookeeper客户端的主要类文件。如果要使用Zookeeper服务,应用程序首先必须创建一个Zooeeper 实例,这时就需要使用此类。一旦客户端和Zookeeper服务端建立起了连接,Zookeeper系统将会给本次连接会话分配一个ID值,并且客户端将会周期性的向服务器端发送心跳来维持会话连接。只要连接有效,客户端就可以使用 Zookeeper API 来做相应处理了。

2. 准备工作

  • 导入依赖
<dependency>
	<groupId>org.apache.zookeeper</groupId>
	<artifactId>zookeeper</artifactId>
	<version>3.4.14</version>
</dependency>

3. 建立会话

package com.study.api;

import org.apache.zookeeper.WatchedEvent;
import org.apache.zookeeper.Watcher;
import org.apache.zookeeper.ZooKeeper;

import java.io.IOException;
import java.util.concurrent.CountDownLatch;

public class CreateSession implements Watcher {
   

    private static final CountDownLatch countDownLatch = new CountDownLatch(1);

    /**
     * 建立会话
     */
    public static void main(String[] args) throws IOException, InterruptedException {
   
        /*
        客户端可以通过创建一个zk实例来连接zk服务器  new Zookeeper(connectString,sessionTimeOut,Wather)
            connectString: 连接地址:IP:端口
            sessionTimeOut:会话超时时间:单位毫秒
            Watcher:监听器(当特定事件触发监听时,zk会通过watcher通知到客户端)
         */
        ZooKeeper zooKeeper = new ZooKeeper("39.106.101.9:2181",5000,new CreateSession());

        System.out.println(zooKeeper.getState());
        // 计数工具类:CountDownLatch:不让main方法结束,让线程处于等待阻塞
        countDownLatch.await();
        //表示会话真正建
        System.out.println("客户端与服务端会话真正建立了");
    }

    /**
     * 回调方法:处理来自服务器端的watcher通知
     */
    public void process(WatchedEvent watchedEvent) {
   
        if(watchedEvent.getState() == Event.KeeperState.SyncConnected){
   
            //解除主程序在CountDownLatch上的等待阻塞
            System.out.println("process方法执行了...");
            countDownLatch.countDown();
        }
    }
}

注意: Zookeeper 客户端和服务端会话的建立是一个异步的过程,也就是说在程序中,构造方法会在处理完客户端初始化工作后立即返回,在大多数情况下,此时并没有真正建立好一个可用的会话,在会话的生命周期中处于"CONNECTING"的状态。当该会话真正创建完毕后ZooKeeper服务端会向会话对应的客户端发送一个事件通知,以告知客户端,客户端只有在获取这个通知之后,才算真正建立了会话。

4. 创建节点

package com.study.api;

import org.apache.zookeeper.*;

import java.io.IOException;

public class CreateNote implements Watcher {
   

    private static ZooKeeper zooKeeper;

    /**
     * 建立会话
     */
    public static void main(String[] args) throws IOException, InterruptedException {
   
        /*
        客户端可以通过创建一个zk实例来连接zk服务器  new Zookeeper(connectString,sessionTimeOut,Wather)
        connectString: 连接地址:IP:端口
        sessionTimeOut:会话超时时间:单位毫秒
        Watcher:监听器(当特定事件触发监听时,zk会通过watcher通知到客户端)
        */
        zooKeeper = new ZooKeeper<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值