From 592f6297efdb9e0d057a6845daada7bd4ccd0139 Mon Sep 17 00:00:00 2001
From: quding
Date: Sat, 19 Aug 2017 18:22:15 +0800
Subject: [PATCH] add zkDemo
---
README.MD | 6 ++-
ZkClient-Demo/pom.xml | 35 ++++++++++++++++
.../cn/mrdear/zkclient/conf/ZkClientConf.java | 13 ++++++
.../zkclient/tec101/ZkClientCrudExample.java | 40 ++++++++++++++++++
.../tec101/zkClientNameServiceExample.java | 35 ++++++++++++++++
ZkClient-Demo/src/main/resources/log4j.xml | 42 +++++++++++++++++++
6 files changed, 170 insertions(+), 1 deletion(-)
create mode 100644 ZkClient-Demo/pom.xml
create mode 100644 ZkClient-Demo/src/main/java/cn/mrdear/zkclient/conf/ZkClientConf.java
create mode 100644 ZkClient-Demo/src/main/java/cn/mrdear/zkclient/tec101/ZkClientCrudExample.java
create mode 100644 ZkClient-Demo/src/main/java/cn/mrdear/zkclient/tec101/zkClientNameServiceExample.java
create mode 100644 ZkClient-Demo/src/main/resources/log4j.xml
diff --git a/README.MD b/README.MD
index 08ba771..f5f828e 100644
--- a/README.MD
+++ b/README.MD
@@ -67,5 +67,9 @@ SpringDataRedis学习的一个Demo,内容不多,配合博文:[redis学习记录(
--------------
增加Spring Security Demo,项目中使用了JWT Token验证机制,该项目可以很好的了解整个流程的作用,需要配合我博客中Spring Security相关博文食用.
-16.待添加
+16.ZkClient-Demo
+--------------
+对于zk的基本操作测试与分析,主要是了解zk的工作模式.
+
+17.待添加
--------------
diff --git a/ZkClient-Demo/pom.xml b/ZkClient-Demo/pom.xml
new file mode 100644
index 0000000..c4b15c9
--- /dev/null
+++ b/ZkClient-Demo/pom.xml
@@ -0,0 +1,35 @@
+
+
+ 4.0.0
+
+ cn.mrdear.zkclient
+ ZkClient-Demo
+ 1.0-SNAPSHOT
+
+
+
+
+
+
+ com.101tec
+ zkclient
+ 0.10
+
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-compiler-plugin
+
+ 1.8
+ 1.8
+
+
+
+
+
\ No newline at end of file
diff --git a/ZkClient-Demo/src/main/java/cn/mrdear/zkclient/conf/ZkClientConf.java b/ZkClient-Demo/src/main/java/cn/mrdear/zkclient/conf/ZkClientConf.java
new file mode 100644
index 0000000..d6bc763
--- /dev/null
+++ b/ZkClient-Demo/src/main/java/cn/mrdear/zkclient/conf/ZkClientConf.java
@@ -0,0 +1,13 @@
+package cn.mrdear.zkclient.conf;
+
+/**
+ * @author Niu Li
+ * @since 2017/8/18
+ */
+public class ZkClientConf {
+
+ public static final String zkHost = "106.15.93.73:2181";
+
+ public static final Integer zkTimeOut = 2000;
+
+}
diff --git a/ZkClient-Demo/src/main/java/cn/mrdear/zkclient/tec101/ZkClientCrudExample.java b/ZkClient-Demo/src/main/java/cn/mrdear/zkclient/tec101/ZkClientCrudExample.java
new file mode 100644
index 0000000..d5b78ce
--- /dev/null
+++ b/ZkClient-Demo/src/main/java/cn/mrdear/zkclient/tec101/ZkClientCrudExample.java
@@ -0,0 +1,40 @@
+package cn.mrdear.zkclient.tec101;
+
+import org.I0Itec.zkclient.ZkClient;
+
+import cn.mrdear.zkclient.conf.ZkClientConf;
+
+import java.util.List;
+
+/**
+ * 连接zk demo
+ * @author Quding Ding
+ * @since 2017/8/18
+ */
+public class ZkClientCrudExample {
+
+ private static final ZkClient ZK_CLIENT = new ZkClient(ZkClientConf.zkHost, ZkClientConf.zkTimeOut);
+
+ /**
+ * 创建节点,节点存在则抛异常,一次只能创建一个目录节点,否则报错
+ * @param path 路径
+ * @param value 节点携带的数据
+ */
+ public void createNode(String path, String value) {
+ ZK_CLIENT.createPersistent(path, value);
+ }
+
+ /**
+ * 得到子节点,节点不存在直接报错
+ * @param root 查找子节点
+ */
+ public List children(String root) {
+ return ZK_CLIENT.getChildren(root);
+ }
+
+ public static void main(String[] args) {
+ ZkClientCrudExample example = new ZkClientCrudExample();
+ example.createNode("/quding/nameService","命名服务");
+ }
+
+}
diff --git a/ZkClient-Demo/src/main/java/cn/mrdear/zkclient/tec101/zkClientNameServiceExample.java b/ZkClient-Demo/src/main/java/cn/mrdear/zkclient/tec101/zkClientNameServiceExample.java
new file mode 100644
index 0000000..0a9f295
--- /dev/null
+++ b/ZkClient-Demo/src/main/java/cn/mrdear/zkclient/tec101/zkClientNameServiceExample.java
@@ -0,0 +1,35 @@
+package cn.mrdear.zkclient.tec101;
+
+import org.I0Itec.zkclient.ZkClient;
+
+import cn.mrdear.zkclient.conf.ZkClientConf;
+
+/**
+ * zk的命名服务,参考博文 http://www.hollischuang.com/archives/1595
+ * @author Quding Ding
+ * @since 2017/8/19
+ */
+public class zkClientNameServiceExample {
+
+ private static final ZkClient ZK_CLIENT = new ZkClient(ZkClientConf.zkHost, ZkClientConf.zkTimeOut);
+
+
+ private static final String nameServicePath = "/quding/nameService/name";
+
+ /**
+ * 每次拿到id都需要创建相应的节点,再删除,适合读多写少的环境下
+ * @return id
+ */
+ public Long getUUID() {
+ final String sequential = ZK_CLIENT.createPersistentSequential(nameServicePath, "id");
+ ZK_CLIENT.delete(sequential);
+ return Long.valueOf(sequential.substring(nameServicePath.length()));
+ }
+
+
+ public static void main(String[] args) {
+ zkClientNameServiceExample example = new zkClientNameServiceExample();
+ System.out.println(example.getUUID());
+ }
+
+}
diff --git a/ZkClient-Demo/src/main/resources/log4j.xml b/ZkClient-Demo/src/main/resources/log4j.xml
new file mode 100644
index 0000000..357f626
--- /dev/null
+++ b/ZkClient-Demo/src/main/resources/log4j.xml
@@ -0,0 +1,42 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file