笔记大纲
开发环境
实现要求
测试代码(详细实现步骤)
一、开发环境
开发工具:idea2017
项目管理工具:Maven
Client端运行环境:JDK1.8
Server端运行环境:CentOS7.0(防火墙检查是否关闭)
项目类型:SpringBoot2.1.9
日志类型:log4j
二、实现要求
Java作为Zookeeper的Client端,CentOS7.0为Zookeeper的Server端!
(1)通过Java程序,新建连接Zookeeper,就像JDBC的Connection,openSession;
(2)新建一个znode节点“/zkDemo191031”
(3)获取当前节点"/zkDemo191031"的最新值"zkTestData666"
(4)关闭连接
三、测试代码
(1)Lof4j日志
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
<appender name="log.console" class="org.apache.log4j.ConsoleAppender">
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d{HH:mm:ss,SSS} %5p (%C{1}:%M) - %m%n" />
</layout>
</appender>
<appender name="log.file" class="org.apache.log4j.DailyRollingFileAppender">
<param name="File" value="D:\\lindaxia4XML.log" />
<param name="Append" value="true" />
<param name="DatePattern" value="'.'yyyy-MM-dd" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d{HH:mm:ss,SSS} %5p (%C{1}:%M) - %m%n" />
</layout>
</appender>
<root>
<level value="info" />
<appender-ref ref="log.console" />
<appender-ref ref="log.file" />
</root>
</log4j:configuration>
(2)pom,.xml文件添加依赖
<dependency>
<groupId>com.101tec
</groupId>
<artifactId>zkclient
</artifactId>
<version>0.10
</version>
</dependency>
<dependency>
<groupId>org.apache.zookeeper
</groupId>
<artifactId>zookeeper
</artifactId>
<version>3.4.9
</version>
</dependency>
<dependency>
<groupId>log4j
</groupId>
<artifactId>log4j
</artifactId>
<version>1.2.17
</version>
</dependency>
(3)测试主代码
import org
.apache
.zookeeper
.*
;
import org
.apache
.zookeeper
.data
.Stat
;
import java
.io
.IOException
;
public class ZkDemo {
public static final String CONNECTSTRING
= "192.168.43.111:2181";
public static final String PATH
= "/zkDemo191031";
public static final int SESSION_TIMEOUT
= 20 * 1000;
public ZooKeeper
startZK() throws IOException
{
return new ZooKeeper(CONNECTSTRING
, SESSION_TIMEOUT
, new Watcher() {
@Override
public void process(WatchedEvent watchedEvent
) {
}
});
}
public void createZookeeper(ZooKeeper zk
, String path
, String data
) throws KeeperException
, InterruptedException
{
zk
.create(path
, data
.getBytes(), ZooDefs
.Ids
.OPEN_ACL_UNSAFE
, CreateMode
.PERSISTENT
);
}
public String
getZNode(ZooKeeper zk
, String path
) throws KeeperException
, InterruptedException
{
String result
= "";
byte[] data
= zk
.getData(path
, false, new Stat());
result
= new String(data
);
return result
;
}
public void stopZK(ZooKeeper zk
) throws InterruptedException
{
if (zk
!= null
) {
zk
.close();
}
}
public static void main(String
[] args
) throws Exception
{
ZkDemo zkDemo
= new ZkDemo();
ZooKeeper zk
= zkDemo
.startZK();
if(zk
.exists(PATH
,false)==null
){
zkDemo
.createZookeeper(zk
,PATH
,"zkTestData666");
String zNode
= zkDemo
.getZNode(zk
, PATH
);
System
.out
.println("====测试获取zNode节点信息========"+zNode
);
}else{
System
.out
.println("zNode节点已经存在!!!");
}
zkDemo
.stopZK(zk
);
}
}
Client端测试
控制台输出,符合输出要求!
Server端校验
Zookeeper客户端新增节点成功!
☝上述分享来源个人总结,如果分享对您有帮忙,希望您积极转载;如果您有不同的见解,希望您积极留言,让我们一起探讨,您的鼓励将是我前进道路上一份助力,非常感谢!我会不定时更新相关技术动态,同时我也会不断完善自己,提升技术,希望与君同成长同进步!
☞本人博客:https://coding0110lin.blog.csdn.net/ 欢迎转载,一起技术交流吧!