当前位置: 首页 > 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

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 【原创】java+swing+mysql健身房管理系统设计与实现
  • Adobe After Effects的插件--------CC Ball Action
  • CMake编译指令极简说明
  • Redis计数器:数字的秘密
  • vue项目关于ERR_OSSL_EVP_UNSUPPORTED的问题
  • SpringBoot集成kafka开发-消息消费的分区策略(消费者如何判断从哪个分区中消费消息的?)
  • 【C#】【EXCEL】Bumblebee/Components/Analysis/GH_Ex_Ana_CondAverage.cs
  • huggingface下载model
  • Linux-远程访问及控制
  • Java数据结构篇
  • arm-Pwn环境搭建+简单题目
  • hostnamectrl到底是什么命令?
  • 还在烦恼Cosplay论坛开发?探索PHP+Vue的完美解决方案!
  • JVM类加载机制—类加载器和双亲委派机制详解
  • Mybatis框架常见问题总结
  • 「译」Node.js Streams 基础
  • ES6核心特性
  • exports和module.exports
  • Flex布局到底解决了什么问题
  • gitlab-ci配置详解(一)
  • JavaScript异步流程控制的前世今生
  • Linux下的乱码问题
  • mysql常用命令汇总
  • node和express搭建代理服务器(源码)
  • node学习系列之简单文件上传
  • Python打包系统简单入门
  • spring-boot List转Page
  • SpringBoot 实战 (三) | 配置文件详解
  • 测试开发系类之接口自动化测试
  • 分享一个自己写的基于canvas的原生js图片爆炸插件
  • 后端_ThinkPHP5
  • 盘点那些不知名却常用的 Git 操作
  • 前端每日实战:70# 视频演示如何用纯 CSS 创作一只徘徊的果冻怪兽
  • 让你的分享飞起来——极光推出社会化分享组件
  • 使用 Node.js 的 nodemailer 模块发送邮件(支持 QQ、163 等、支持附件)
  •  一套莫尔斯电报听写、翻译系统
  • C# - 为值类型重定义相等性
  • ​LeetCode解法汇总2808. 使循环数组所有元素相等的最少秒数
  • ​二进制运算符:(与运算)、|(或运算)、~(取反运算)、^(异或运算)、位移运算符​
  • #[Composer学习笔记]Part1:安装composer并通过composer创建一个项目
  • #控制台大学课堂点名问题_课堂随机点名
  • (16)UiBot:智能化软件机器人(以头歌抓取课程数据为例)
  • (Demo分享)利用原生JavaScript-随机数-实现做一个烟花案例
  • (JS基础)String 类型
  • (MTK)java文件添加简单接口并配置相应的SELinux avc 权限笔记2
  • (搬运以学习)flask 上下文的实现
  • (附源码)springboot宠物管理系统 毕业设计 121654
  • (附源码)ssm码农论坛 毕业设计 231126
  • (紀錄)[ASP.NET MVC][jQuery]-2 純手工打造屬於自己的 jQuery GridView (含完整程式碼下載)...
  • (剑指Offer)面试题34:丑数
  • (理论篇)httpmoudle和httphandler一览
  • (一)基于IDEA的JAVA基础1
  • (幽默漫画)有个程序员老公,是怎样的体验?
  • (转)甲方乙方——赵民谈找工作
  • (转)详解PHP处理密码的几种方式