当前位置: 首页 > news >正文

java操作zookeeper

java操作zookeeper

文档

  1. linux安装java -centos安装java -linux配置java环境变量
  2. zookeeper单机安装
  3. zookeeper集群安装
  4. zookeeper客户端命令行操作、节点类型及监听器
  5. zookeeper集群写数据原理
  6. java操作zookeeper

依赖信息

<dependency><groupId>junit</groupId><artifactId>junit</artifactId><scope>test</scope>
</dependency>
<dependency><groupId>org.apache.logging.log4j</groupId><artifactId>log4j-core</artifactId><version>2.8.2</version>
</dependency>
<dependency><groupId>org.apache.zookeeper</groupId><artifactId>zookeeper</artifactId><version>3.5.7</version>
</dependency>

log4j配置文件

在resources下创建log4j.properties文件

log4j.rootLogger=INFO, stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d   %p  [%c]    -   %m%n
log4j.appender.logfile=org.apache.log4j.FileAppender
log4j.appender.logfile.File=target/spring.log
log4j.appender.logfile.layout=org.apache.log4j.PatternLayout
log4j.appender.logfile.layout.ConversionPattern=%d   %p  [%c]    -   %m%n

java操作zookeeper参考代码

  • 包括连接zookeeper、创建节点、获取子节点列表、判断节点是否存在、监听等方法
  • 注释中包含注意事项
package xin.yangshuai.zookeeper01.client;import org.apache.zookeeper.*;
import org.apache.zookeeper.data.Stat;import java.io.IOException;
import java.util.List;public class ZkClient {private ZooKeeper zkClient;// 注意:逗号左右不能有空格private String connectString = "192.168.145.132:2181,192.168.145.133:2181,192.168.145.134:2181";// 2000毫秒private int sessionTimeout = 2000;/*** 连接zookeeper** @throws IOException*/public void init() throws IOException {zkClient = new ZooKeeper(connectString, sessionTimeout, new Watcher() {@Overridepublic void process(WatchedEvent watchedEvent) {// 初始化时,会执行一次System.out.println(watchedEvent.getPath() + "-------------");try {// 注册一次,监听一次,如果想持续监听,可重新注册// getChildren()方法设置了监听,所以每次调用将重新注册监听getChildren();} catch (KeeperException | InterruptedException e) {e.printStackTrace();}}});}/*** 创建一个节点** @throws KeeperException* @throws InterruptedException*/public void create() throws KeeperException, InterruptedException {String node = zkClient.create("/client", "create-test".getBytes(), ZooDefs.Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT);System.out.println("Created " + node);}/*** 获取子节点** @throws KeeperException* @throws InterruptedException*/public void getChildren() throws KeeperException, InterruptedException {// 参数watch设置为true,表示使用zkClient创建时的Watcher,并监听当前节点的子节点的增删变化List<String> children = zkClient.getChildren("/", true);for (String child : children) {System.out.println("children " + child);}}/*** 判断节点是否存在** @throws KeeperException* @throws InterruptedException*/public void exist() throws KeeperException, InterruptedException {Stat stat = zkClient.exists("/client", false);System.out.println(stat == null ? "not exist" : "exist");stat = zkClient.exists("/client1", false);System.out.println(stat == null ? "not exist" : "exist");}public static void main(String[] args) throws IOException, KeeperException, InterruptedException {ZkClient zkClient = new ZkClient();zkClient.init();zkClient.create();// getChildren()方法不用手动调用,zookeeper客户端初始化时,会调用监听器的process方法,可在该方法中调用getChildren()方法// zkClient.getChildren();zkClient.exist();// 保持运行状态,来观察监听器的动作Thread.sleep(Long.MAX_VALUE);// 可在命令行增删节点 / 的子节点,来触发监听器动作}
}

java中的zookeeper节点类型

持久无序号节点:CreateMode.PERSISTENT
持久有序号节点:CreateMode.PERSISTENT_SEQUENTIAL
临时无序号节点:CreateMode.EPHEMERAL
临时有序号节点:CreateMode.EPHEMERAL_SEQUENTIAL

http://www.mrgr.cn/news/8753.html

相关文章:

  • 【话题】关于工厂模式和策略模式
  • 机架式服务器通常适用于哪些场景?
  • 2.redis背景知识
  • 34次8.22(docker基础)
  • 哈希-赎金信字母相关
  • Linux(面试篇)
  • FFmpeg的入门实践系列一
  • 打造高效的编程学习“知识宝库”:从笔记记录到知识管理
  • Object.entries 作用
  • SEO古诗网,可做站群,可二开成泛——码山侠
  • 【网络编程】select实现服务器与客户端进行通信
  • RabbitMQ 基础总结
  • 基于imx6ull平台移植ffmpeg3.4.5及ffmpeg验证
  • 从零开始学cv-6:图像的灰度变换
  • 【C++从练气到飞升】14---深入浅出继承
  • 深度学习--复制机制
  • leetcode1005:K次取反后最大化的数组和
  • Could not resolve host: mirrorlist.centos.org; 未知的错误
  • 游戏开发设计模式之迭代器模式
  • npm install 报错解决记录