`
lanhuidong
  • 浏览: 227669 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

ZooKeeper——Java代码操作ZooKeeper服务器

阅读更多
package zookeeper.demo;

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

import org.apache.zookeeper.CreateMode;
import org.apache.zookeeper.KeeperException;
import org.apache.zookeeper.WatchedEvent;
import org.apache.zookeeper.Watcher;
import org.apache.zookeeper.Watcher.Event.KeeperState;
import org.apache.zookeeper.ZooDefs.Ids;
import org.apache.zookeeper.ZooKeeper;
import org.apache.zookeeper.data.Stat;

public class ZooKeeperTestCase implements Watcher {
    
    private static ZooKeeper zk;
    private String path;
    private Stat stat;
    private static CountDownLatch countDown = new CountDownLatch(1);
    
    public ZooKeeperTestCase(){
        if(zk == null){
            try {
                System.out.println("Starting ZK:");
                zk = new ZooKeeper("192.168.202.129", 3000, this);
                countDown.await();
                System.out.println("Finished starting ZK: " + zk);
            } catch (IOException e) {
                zk = null;
                e.printStackTrace();
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }
    
    @Override
    public void process(WatchedEvent event) {
        if(event.getState() == KeeperState.SyncConnected){
            countDown.countDown();
        }
        System.out.println("-----"+event.getState());
    }
    
    public void create() throws KeeperException, InterruptedException{
        path = zk.create("/zk_java", "java_binding".getBytes(), Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT_SEQUENTIAL);
        System.out.println("created znode:" + path);
    }
    
    public void list() throws KeeperException, InterruptedException{
        List<String> strings = zk.getChildren("/", true);
        System.out.println("list:"+strings);
    }
    
    public void exist() throws KeeperException, InterruptedException{
        stat = zk.exists(path, true);
        System.out.println("exits:"+stat.getDataLength());
    }
    
    public void get() throws KeeperException, InterruptedException{
        Stat stat = new Stat();
        byte[] data = zk.getData(path, true, stat);
        System.out.print(new String(data));
        System.out.println(stat);
    }
    
    public void set() throws KeeperException, InterruptedException{
        stat = zk.setData(path, "zk_ooxx".getBytes(), stat.getVersion());
    }
    
    public void delete() throws InterruptedException, KeeperException{
        zk.delete(path, stat.getVersion());
    }
    
    public void close() throws InterruptedException{
        zk.close();
    }

    public static void main(String[] args) throws Exception {
        ZooKeeperTestCase zkTest = new ZooKeeperTestCase();
        
        zkTest.list();
        
        zkTest.create();
        zkTest.list();
        
        zkTest.exist();
        zkTest.get();
        
        zkTest.set();
        zkTest.get();
        
        zkTest.delete();
        zkTest.list();
        
        zkTest.close();
    }
}

 

分享到:
评论

相关推荐

    java面试——zookeeper面试专题.zip

    - 通过部署多台Zookeeper服务器组成集群,每个节点都参与到选举和数据同步,从而避免单点故障。 6. 面试准备建议 - 理解Zookeeper的数据模型和API,掌握创建、读取、更新和删除节点的操作。 - 掌握Zookeeper的...

    SSM实战项目——Java高并发秒杀API,详细流程+学习笔记

    SSM实战项目——Java高并发秒杀API是一个深入学习Java后端开发的重要实践,它涵盖了Spring、SpringMVC和MyBatis三大框架的整合应用,以及如何处理高并发下的秒杀场景。在这个项目中,我们将深入理解如何设计并实现一...

    SpringCloud——Zookeeper(注册中心)

    同时,我们需要在配置文件中设置Zookeeper服务器的连接信息: ```yaml spring: cloud: zookeeper: discovery: enabled: true connect-string: localhost:2181 ``` **服务发现** 其他服务可以通过Zookeeper...

    zookeeper实战:ConfigServer代码样例

    1. 连接Zookeeper:首先,客户端需要连接到Zookeeper服务器,创建`ZooKeeper`对象,通常会指定服务器地址列表、会话超时时间等参数。 ```java ZooKeeper zookeeper = new ZooKeeper("localhost:2181", 3000, ...

    zookeeper-3.4.6.tar

    1. **源代码**:提供了完整的Zookeeper服务器端和客户端的源代码,开发者可以通过阅读源码了解其内部工作原理,或者进行定制化开发。 2. **文档**:包括用户指南、管理员手册和开发者指南,帮助用户快速上手,理解...

    分布式设计与开发(一)------zookeeper实现实例

    在这个系列的第一部分,我们将重点关注Zookeeper——一个广泛使用的分布式协调服务。Zookeeper由Apache软件基金会开发,旨在解决分布式环境中的数据管理、服务发现、配置管理等问题。 Zookeeper的核心概念包括节点...

    zookeeper-3.4.11安装包

    在集群模式下,多个ZooKeeper服务器共同协作,提供高可用性和容错性。 **客户端与ZooKeeper交互:** ZooKeeper提供了多种客户端,包括命令行客户端、Java API以及各种语言的SDK,如Python、C++、Go等。这些客户端...

    zookeeper的分布式全局锁纯代码解决方案

    在代码中,你可以看到如何初始化Zookeeper客户端,创建锁节点,监听其他节点的变化,以及如何优雅地处理客户端和Zookeeper服务器的连接断开情况。这些代码示例可以帮助你理解分布式锁的工作原理,并为你的项目提供可...

    zookeeper客户端与服务器管理包

    Node-ZK-Browser是一款基于Node.js的Zookeeper服务器管理工具,通过Web界面提供便捷的可视化操作。在`node-zk-browser-master.zip`中,包含了项目的源代码和部署文件。 1. 界面友好:Node-ZK-Browser提供了直观的树...

    Zookeeper 进阶之——典型应用场景(一)1

    本文将探讨 Zookeeper 的几个典型应用场景,并通过代码示例进行解析。 **统一命名服务 (Name Service)** 在分布式环境中,Zookeeper 提供了一种层次化的命名空间,类似于文件系统的目录结构。开发者可以通过调用 ...

    zookeeper admin guide

    对于评估、测试或开发环境,可以使用单个ZooKeeper服务器进行设置。在这种情况下,通常不关心高可用性和容错能力,而是更关注于快速搭建和轻松管理。尽管如此,为了保证未来的扩展性,建议仍然遵循良好的实践。 ###...

    zookeeper-3.4.13

    1. **bin** 目录:包含启动和停止Zookeeper服务器的脚本,如`zkServer.sh`(Unix/Linux)和`zkServer.cmd`(Windows)。 2. **conf** 目录:提供默认的配置文件,如`zoo.cfg`,这是Zookeeper服务器的主要配置文件。 ...

    zookeeper淘宝实现的监控

    ————————————————————————————- 3. 到taokeeper根目录下执行 packageDaily.cmd 命令,打成一个war包,之后进行部署 如何使用 1. taokeeper-monitor启动后,还没有配置任何zookeeper...

    zookeeper-3.4.12.tar.gz.zip

    《Zookeeper分布式协调服务详解——基于3.4.12版本》 Apache ZooKeeper是一款开源的分布式协调服务,它为分布式应用提供了一种简单、高效且可靠的命名服务、配置管理、集群同步、分布式锁等机制。在3.4.12版本中,...

    ZooKeeper集群安装配置

    ZooKeeper 是一个分布式开源框架,提供了协调分布式应用的基本服务,它向外部应用暴露一组通用服务——分布式同步(Distributed Synchronization)、命名服务(Naming Service)、集群维护(Group Maintenance)等。...

    apache-zookeeper-3.6.2-bin

    - `bin`目录下的`zkServer.sh`用于启动和停止Zookeeper服务器,`zkCli.sh`则是一个命令行客户端,用于交互式操作Zookeeper。 2. **数据模型**: - ZooKeeper的数据模型是一棵树形结构,称为ZNode。每个ZNode都有...

    开课吧-04分布式协调服务器Zookeeper.pdf

    1. **顺序一致性**:来自同一客户端的多个事务请求(主要是写操作),Zookeeper保证这些请求最终会被按照发起的顺序依次记录。这种特性确保了数据更新的顺序性,避免了并发写入导致的混乱。 2. **原子性**:...

    Zookeeper 管理工具

    启动后,ZooInspector会显示一个连接对话框,你需要输入Zookeeper服务器的地址和端口号,通常是localhost和2181。 ZooInspector的主要功能包括: 1. **节点浏览**:ZooInspector的核心功能是查看和编辑Zookeeper中...

    Zookeeper客户端,资源小方便快捷

    启动后,ZooInspector的界面会显示一个连接对话框,这里需要填写Zookeeper服务器的连接信息,包括主机地址和端口号(默认是2181)。一旦成功连接,用户就能看到Zookeeper集群中的数据结构,以树形结构展示各个节点。...

Global site tag (gtag.js) - Google Analytics