使用zookeeper遇到问题:
- 重复注册watcher
- session失效重连
- 异常处理(删除节点不能有子节点,新增节点必须有父节点等)
zkclient是Github上一个开源的Zookeeper客户端,在Zookeeper原生 API接口之上进行了包装,是一个更加易用的Zookeeper客户端。同时Zkclient在内部实现了诸如Session超时重连,Watcher反复注册等功能,从而提高开发效率。
- <dependency>
- <groupId>com.101tec</groupId>
- <artifactId>zkclient</artifactId>
- <version>0.10</version>
- </dependency>
- String connStr = "192.168.154.128:2181";
- ZkClient zk = new ZkClient(connStr);
String res = zk.create("/root", "hgy", CreateMode.PERSISTENT);
zk.writeData("/root", "hgy");
String res = zk.readData("/root");
zk.delete("/root");
- zk.subscribeDataChanges("/root/ghz", new IZkDataListener() {
-
-
- @Override
- public void handleDataDeleted(String arg0) throws Exception {
- System.err.println("数据删除:" + arg0);
- }
- @Override
- public void handleDataChange(String arg0, Object arg1) throws Exception {
- System.err.println("数据修改:" + arg0 + "------" + arg1);
-
-
- }
- });
- zk.subscribeChildChanges("/root", (arg0, arg1) -> {
- System.err.println("子节点发生变化:" + arg0);
- arg1.forEach(f -> {
- System.out.println("content:" + f);
- });
- });