大数据学习
bigdata learning
Toggle navigation
大数据学习
主页
openGauss数据库
Flume
MongoDB
Hadoop
数据库实验
Kafka
Zookeeper
Hbase
Manual
Spark
Neo4j
InfluxDB
RabbitMQ
Flink
About Me
归档
标签
04-Zookeeper-Java客户端搭建
Zookeeper
2022-10-17 19:47:21
40
0
0
bigdata
Zookeeper
本教程使用的 IDE 为 IntelliJ IDEA,创建一个 maven 工程,命名为 zookeeper-demo,并且引入如下依赖,可以自行在 maven 中央仓库选择合适的版本,介绍原生 API 和 Curator 两种方式。 IntelliJ IDEA 相关介绍: * [Intellij IDEA 使用教程](https://www.runoob.com/w3cnote/intellij-idea-usage.html) * [Maven IntelliJ](https://www.runoob.com/maven/maven-intellij.html) ```xml <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.11</version> <scope>test</scope> </dependency> <dependency> <groupId>org.apache.zookeeper</groupId> <artifactId>zookeeper</artifactId> <version>3.4.8</version> </dependency> <dependency> <groupId>org.apache.curator</groupId> <artifactId>curator-framework</artifactId> <version>4.0.0</version> </dependency> <dependency> <groupId>org.apache.curator</groupId> <artifactId>curator-recipes</artifactId> <version>4.0.0</version> </dependency> ``` maven 工程目录结构:  # 一、客户端的 zookeeper 原生 API 使用 zookeeper 原生 API, 连接上一教程搭建的三台服务组成的集群,因为连接需要时间,用 countDownLatch 阻塞,等待连接成功,控制台输出连接状态! ## 实例 ```java 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 ConnectDemo { public static void main(String[] args) { try { final CountDownLatch countDownLatch = new CountDownLatch(1); ZooKeeper zooKeeper = new ZooKeeper("127.0.0.1:2181", 4000, new Watcher() { @Override public void process(WatchedEvent event) { if (Watcher.Event.KeeperState.SyncConnected == event.getState()) { countDownLatch.countDown(); } } }); countDownLatch.await(); System.out.println(zooKeeper.getState()); } catch (IOException e) { e.printStackTrace(); } catch (InterruptedException e) { e.printStackTrace(); } } } ``` 控制台输出 connected 显示连接成功!  简单示例添加节点 API: ``` zooKeeper.create("/nbu","0".getBytes(), ZooDefs.Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT); ```  **提示:**更多命令功能使用请参考本教程后面章节。 同时在服务端终端执行命令,显示设置成功。  # 二、客户端的 curator 连接 Curator 是 Netflix 公司开源的一套 zookeeper 客户端框架,解决了很多 Zookeeper 客户端非常底层的细节开发工作,包括连接重连、反复注册 Watcher 和 NodeExistsException 异常等。 Curator 包含了几个包: * **curator-framework**:对 zookeeper 的底层 api 的一些封装。 * **curator-client**:提供一些客户端的操作,例如重试策略等。 * **curator-recipes**:封装了一些高级特性,如:Cache 事件监听、选举、分布式锁、分布式计数器、分布式 Barrier 等。 简单使用示例: ## 实例 ```java package org.nbubigdata.zookeeper; import org.apache.curator.framework.CuratorFramework; import org.apache.curator.framework.CuratorFrameworkFactory; import org.apache.curator.retry.ExponentialBackoffRetry; import org.apache.zookeeper.data.Stat; public class CuratorDemo { public static void main(String[] args) throws Exception { CuratorFramework curatorFramework = CuratorFrameworkFactory.builder().connectString("127.0.0.1:2181").sessionTimeoutMs(4000).retryPolicy(new ExponentialBackoffRetry(1000, 3)).namespace("").build(); curatorFramework.start(); Stat stat = new Stat(); byte[] bytes = curatorFramework.getData().storingStatIn(stat).forPath("/nbu"); System.out.println(new String(bytes)); curatorFramework.close(); } } ``` 上一步设置了 **/nbu** 节点值,所以控制台输出。  curator 相关参考链接: [http://curator.apache.org/](http://curator.apache.org/)。 demo 源码打包文件: [download](https://hexo-img.obs.cn-east-3.myhuaweicloud.com/img/202210172308038.zip)
上一篇:
04-Spark-Streaming
下一篇:
05 openGauss使用JDBC连接数据库指导手册
文档导航