liutong3 6 anni fa
parent
commit
0c878383ab

+ 8 - 1
comp-example/pom.xml

@ -27,8 +27,15 @@
27 27
			<artifactId>ipu-cache</artifactId>
28 28
			<version>${ipu}</version>
29 29
		</dependency>
30
		<dependency>
31
			<groupId>org.apache.zookeeper</groupId>
32
			<artifactId>zookeeper</artifactId>
33
			<version>3.4.12</version>
34
		</dependency>
30 35
	</dependencies>
31
	
36
37
38
32 39
	<build>
33 40
		<plugins>
34 41
			<plugin>

+ 76 - 0
comp-example/src/test/java/com/ai/ipu/example/zookeeper/ZookeeperExample.java

@ -1,5 +1,81 @@
1 1
package com.ai.ipu.example.zookeeper;
2 2

3
import org.apache.zookeeper.*;
4

5
import java.io.IOException;
6
import java.util.List;
7

3 8
public class ZookeeperExample {
9
    // 会话超时时间,设置为与系统默认时间一致
10
    private static final int SESSION_TIMEOUT = 2 * 1000;
11

12
    // 创建 ZooKeeper 实例
13
    private ZooKeeper zk;
14

15
    // 创建 Watcher 实例
16
    private Watcher wh = new Watcher() {
17
        public void process(WatchedEvent event) {
18
            System.out.println("触发了WatchedEvent的事件 >>> " + event.toString());
19
        }
20
    };
21

22
    // 初始化 ZooKeeper 实例
23
    private void createZKInstance() throws IOException {
24
        // 连接到ZK服务,多个可以用逗号分割写
25
        zk = new ZooKeeper("47.105.160.21:2181,47.105.160.21:2182,47.105.160.21:2183", ZookeeperExample.SESSION_TIMEOUT, this.wh);
26

27
    }
28

29
    private void showNodes(String path) throws InterruptedException, KeeperException {
30
        List<String> list = zk.getChildren(path, this.wh);
31
        int i = 1;
32
        for (String node : list) {
33
            System.out.println("(" + i + ")" + node);
34
            i++;
35
        }
36
    }
37
    
38
    private void ZKOperations() throws InterruptedException, KeeperException {
39
        System.out.println("初始节点:");
40
        showNodes("/");
41
        System.out.println("---------------------------------");
42

43
        System.out.println("创建 ZooKeeper 节点 (znode : myzktest, 数据: myData2 ,权限: OPEN_ACL_UNSAFE ,节点类型: Persistent");
44
        zk.create("/myzktest", "myData2".getBytes(), ZooDefs.Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT);
45
        System.out.println("查看是否创建成功: ");
46
        System.out.println("当前节点:");
47
        showNodes("/");
48
        System.out.println("/myzktest的数据为:");
49
        System.out.println(new String(zk.getData("/myzktest", this.wh, null)));// 添加Watch
50
        System.out.println("---------------------------------");
51

52
        System.out.println("修改节点数据 ");
53
        zk.setData("/myzktest", "liutong".getBytes(), -1);
54
        System.out.println("/myzktest的数据为:");
55
        System.out.println(new String(zk.getData("/myzktest", false, null)));
56
        System.out.println("---------------------------------");
57

58
        // 这里再次进行修改,则不会触发Watch事件,这就是我们验证ZK的一个特性“一次性触发”,也就是说设置一次监视,只会对下次操作起一次作用。
59
        System.out.println("3再次修改节点数据 ");
60
        zk.setData("/myzktest", "liutong2".getBytes(), -1);
61
        System.out.println("/myzktest的数据为:");
62
        System.out.println(new String(zk.getData("/myzktest", false, null)));
63
        System.out.println("---------------------------------");
64

65
        System.out.println("删除节点 ");
66
        zk.delete("/myzktest", -1);
67
        System.out.println(" 节点状态: [" + zk.exists("/myzktest", false) + "]");
68
        showNodes("/");
69
    }
70

71
    private void ZKClose() throws InterruptedException {
72
        zk.close();
73
    }
4 74

75
    public static void main(String[] args) throws IOException, InterruptedException, KeeperException {
76
        ZookeeperExample dm = new ZookeeperExample();
77
        dm.createZKInstance();
78
        dm.ZKOperations();
79
        dm.ZKClose();
80
    }
5 81
}