大企业门户网站建设,金泉网做网站找谁,衡水电子网站建设,兰州网站制作培训班前置知识#xff1a;Zookeeper学习笔记#xff08;1#xff09;—— 基础知识-CSDN博客 Zookeeper集群搭建部分 前提#xff1a;保证zookeeper集群处于启动状态
环境搭建
依赖配置
dependenciesdependencygroupIdjunit/groupIdarti… 前置知识Zookeeper学习笔记1—— 基础知识-CSDN博客 Zookeeper集群搭建部分 前提保证zookeeper集群处于启动状态
环境搭建
依赖配置
dependenciesdependencygroupIdjunit/groupIdartifactIdjunit/artifactIdversionRELEASE/version/dependencydependencygroupIdorg.apache.logging.log4j/groupIdartifactIdlog4j-core/artifactIdversion2.8.2/version/dependencydependencygroupIdorg.apache.zookeeper/groupIdartifactIdzookeeper/artifactIdversion3.5.7/version/dependency/dependencies
log4j.properties
log4j.rootLoggerINFO, stdout
log4j.appender.stdoutorg.apache.log4j.ConsoleAppender
log4j.appender.stdout.layoutorg.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern%d %p [%c] - %m%n
log4j.appender.logfileorg.apache.log4j.FileAppender
log4j.appender.logfile.Filetarget/spring.log
log4j.appender.logfile.layoutorg.apache.log4j.PatternLayout
log4j.appender.logfile.layout.ConversionPattern%d %p [%c] - %m%n
参数具体含义 log4j.rootLoggerINFO, stdout设置根记录器的级别为INFO并指定将日志输出到控制台stdout log4j.appender.stdoutorg.apache.log4j.ConsoleAppender创建一个名为stdout的日志输出器使用org.apache.log4j包中的ConsoleAppender类 log4j.appender.stdout.layoutorg.apache.log4j.PatternLayout为stdout输出器设置布局使用org.apache.log4j包中的PatternLayout类。 log4j.appender.stdout.layout.ConversionPattern%d %p [%c] - %m%n定义了日志消息的格式其中 %d表示日期和时间%p表示日志级别[%c]表示日志来源的类名%m表示实际的日志消息%n表示换行符。 log4j.appender.logfileorg.apache.log4j.FileAppender创建一个名为logfile的日志输出器使用org.apache.log4j包中的FileAppender类。 log4j.appender.logfile.Filetarget/spring.log指定logfile输出器将日志写入到名为target/spring.log的文件中。 log4j.appender.logfile.layoutorg.apache.log4j.PatternLayout为logfile输出器设置布局使用org.apache.log4j包中的PatternLayout类。 log4j.appender.logfile.layout.ConversionPattern%d %p [%c] - %m%n定义了日志消息的格式与stdout输出器相同。 打包插件配置
buildpluginsplugingroupIdorg.apache.maven.plugins/groupIdartifactIdmaven-shade-plugin/artifactIdversion3.2.4/versionexecutionsexecutionphasepackage/phasegoalsgoalshade/goal/goals/execution/executions/plugin/plugins
/build
客户端操作
整体使用junit进行测试
package com.why.zk;import org.apache.zookeeper.*;
import org.apache.zookeeper.data.Stat;
import org.junit.Before;
import org.junit.Test;import java.io.IOException;
import java.util.List;public class zkClient {private static String connetString hadoop102:2181,hadoop103:2181,hadoop104:2181; //客户端连接ipprivate static int sessionTimeout 2000; //超时时间private ZooKeeper zkClient null; //客户端对象Beforepublic void init() throws IOException {zkClient new ZooKeeper(connetString, sessionTimeout, new Watcher() {Overridepublic void process(WatchedEvent watchedEvent) {//收到事件通知后的回调函数System.out.println(事件类型: watchedEvent.getType());System.out.println(事件路径: watchedEvent.getPath());//再次启动对子节点的监听// try {// ListString children zkClient.getChildren(/, true);// for(String child : children)// {// System.out.println(child);// }// } catch (InterruptedException | KeeperException e) {// e.printStackTrace();// }}});}//创建节点Testpublic void create(){try {String nodeCreated zkClient.create(/bigdata/test5,test5.getBytes(),ZooDefs.Ids.OPEN_ACL_UNSAFE,CreateMode.PERSISTENT);System.out.println(nodeCreated);} catch (InterruptedException | KeeperException e) {e.printStackTrace();}}//获取子节点并监听节点变化Testpublic void getChildren() throws InterruptedException, KeeperException {ListString children zkClient.getChildren(/, true);for(String child : children){System.out.println(child);}// 延时阻塞此时在shell中创建子节点可以在控制台监听到子节点的变化Thread.sleep(Long.MAX_VALUE);}//判断节点是否存在Testpublic void exist() throws InterruptedException, KeeperException {Stat stat zkClient.exists(/bigdata, false);System.out.println(stat null ? not exist : exist);}}