zookeeper API介绍java
导入依赖项apache
操做代码示例 bash
Zookeeper官方为Java提供了Zookeeper API,可是Zookeeper API并很差用,只须要了解一下便可,之后能够使用ZkClient(对Zookeeper API作了封装)。服务器
由于zookeeper依赖的jar包比较多,因此推荐使用Maven来管理以来,只须要在pom.xml的依赖中添加下面的内容便可:session
<dependency> <groupId>org.apache.zookeeper</groupId> <artifactId>zookeeper</artifactId> <version>3.4.14</version> <type>pom</type> </dependency>
package cn.ganlixin.test; import java.io.IOException; 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.EventType; import org.apache.zookeeper.Watcher.Event.KeeperState; import org.apache.zookeeper.ZooDefs.Ids; import org.apache.zookeeper.ZooKeeper; public class ZookeeperAPI { public static void main(String[] args) throws IOException, InterruptedException, KeeperException { // 建立一个countDownLatch,用来管理程序运行进度 CountDownLatch countDownLatch = new CountDownLatch(1); // 链接串 //String connectString = "127.0.0.1:2181; 127.0.0.1:2182; 127.0.0.1:2183"; // 会话超时时间 int sessionTimeout = 2000; // 建立zookeeper链接(是异步链接,因此须要让主线程阻塞,在链接成功后,让主线程继续执行) ZooKeeper zk = new ZooKeeper(connectString, sessionTimeout, new Watcher() { @Override public void process(WatchedEvent event) { // 事件类型 EventType type = event.getType(); // 时间状态 KeeperState state = event.getState(); if (state == KeeperState.SyncConnected) { if (type == EventType.None) { System.out.println("成功链接Zookeeper服务器"); countDownLatch.countDown(); // 让主线程继续运行 } } } }); // 阻塞,等待countDownLatch减为0便可继续运行 countDownLatch.await(); // 利用建立的zk链接,进行各类操做 zk.create("/test", "hello world".getBytes(), Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT); byte[] data = zk.getData("/test", null, null); System.out.println(new String(data, 0, data.length)); // 关闭链接 zk.close(); } }