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(); } }
相关推荐
- 通过部署多台Zookeeper服务器组成集群,每个节点都参与到选举和数据同步,从而避免单点故障。 6. 面试准备建议 - 理解Zookeeper的数据模型和API,掌握创建、读取、更新和删除节点的操作。 - 掌握Zookeeper的...
SSM实战项目——Java高并发秒杀API是一个深入学习Java后端开发的重要实践,它涵盖了Spring、SpringMVC和MyBatis三大框架的整合应用,以及如何处理高并发下的秒杀场景。在这个项目中,我们将深入理解如何设计并实现一...
同时,我们需要在配置文件中设置Zookeeper服务器的连接信息: ```yaml spring: cloud: zookeeper: discovery: enabled: true connect-string: localhost:2181 ``` **服务发现** 其他服务可以通过Zookeeper...
1. 连接Zookeeper:首先,客户端需要连接到Zookeeper服务器,创建`ZooKeeper`对象,通常会指定服务器地址列表、会话超时时间等参数。 ```java ZooKeeper zookeeper = new ZooKeeper("localhost:2181", 3000, ...
1. **源代码**:提供了完整的Zookeeper服务器端和客户端的源代码,开发者可以通过阅读源码了解其内部工作原理,或者进行定制化开发。 2. **文档**:包括用户指南、管理员手册和开发者指南,帮助用户快速上手,理解...
在这个系列的第一部分,我们将重点关注Zookeeper——一个广泛使用的分布式协调服务。Zookeeper由Apache软件基金会开发,旨在解决分布式环境中的数据管理、服务发现、配置管理等问题。 Zookeeper的核心概念包括节点...
在集群模式下,多个ZooKeeper服务器共同协作,提供高可用性和容错性。 **客户端与ZooKeeper交互:** ZooKeeper提供了多种客户端,包括命令行客户端、Java API以及各种语言的SDK,如Python、C++、Go等。这些客户端...
在代码中,你可以看到如何初始化Zookeeper客户端,创建锁节点,监听其他节点的变化,以及如何优雅地处理客户端和Zookeeper服务器的连接断开情况。这些代码示例可以帮助你理解分布式锁的工作原理,并为你的项目提供可...
Node-ZK-Browser是一款基于Node.js的Zookeeper服务器管理工具,通过Web界面提供便捷的可视化操作。在`node-zk-browser-master.zip`中,包含了项目的源代码和部署文件。 1. 界面友好:Node-ZK-Browser提供了直观的树...
本文将探讨 Zookeeper 的几个典型应用场景,并通过代码示例进行解析。 **统一命名服务 (Name Service)** 在分布式环境中,Zookeeper 提供了一种层次化的命名空间,类似于文件系统的目录结构。开发者可以通过调用 ...
对于评估、测试或开发环境,可以使用单个ZooKeeper服务器进行设置。在这种情况下,通常不关心高可用性和容错能力,而是更关注于快速搭建和轻松管理。尽管如此,为了保证未来的扩展性,建议仍然遵循良好的实践。 ###...
1. **bin** 目录:包含启动和停止Zookeeper服务器的脚本,如`zkServer.sh`(Unix/Linux)和`zkServer.cmd`(Windows)。 2. **conf** 目录:提供默认的配置文件,如`zoo.cfg`,这是Zookeeper服务器的主要配置文件。 ...
————————————————————————————- 3. 到taokeeper根目录下执行 packageDaily.cmd 命令,打成一个war包,之后进行部署 如何使用 1. taokeeper-monitor启动后,还没有配置任何zookeeper...
《Zookeeper分布式协调服务详解——基于3.4.12版本》 Apache ZooKeeper是一款开源的分布式协调服务,它为分布式应用提供了一种简单、高效且可靠的命名服务、配置管理、集群同步、分布式锁等机制。在3.4.12版本中,...
ZooKeeper 是一个分布式开源框架,提供了协调分布式应用的基本服务,它向外部应用暴露一组通用服务——分布式同步(Distributed Synchronization)、命名服务(Naming Service)、集群维护(Group Maintenance)等。...
- `bin`目录下的`zkServer.sh`用于启动和停止Zookeeper服务器,`zkCli.sh`则是一个命令行客户端,用于交互式操作Zookeeper。 2. **数据模型**: - ZooKeeper的数据模型是一棵树形结构,称为ZNode。每个ZNode都有...
1. **顺序一致性**:来自同一客户端的多个事务请求(主要是写操作),Zookeeper保证这些请求最终会被按照发起的顺序依次记录。这种特性确保了数据更新的顺序性,避免了并发写入导致的混乱。 2. **原子性**:...
启动后,ZooInspector会显示一个连接对话框,你需要输入Zookeeper服务器的地址和端口号,通常是localhost和2181。 ZooInspector的主要功能包括: 1. **节点浏览**:ZooInspector的核心功能是查看和编辑Zookeeper中...
启动后,ZooInspector的界面会显示一个连接对话框,这里需要填写Zookeeper服务器的连接信息,包括主机地址和端口号(默认是2181)。一旦成功连接,用户就能看到Zookeeper集群中的数据结构,以树形结构展示各个节点。...