zkClient操作

根本增删改查代码如下

public class createSession {    public static void main(String[] args) {        ZkClient zkClient = new ZkClient("119.45.52.68:2181");        System.out.println("connect success");    }}public class CreateNode {    public static void main(String[] args) {        ZkClient zkClient = new ZkClient("119.45.52.68:2181");        System.out.println("connect success");        //true代表能够递归创立目录        zkClient.createPersistent("/zkclient/persistent/children",true);        System.out.println("create node success");    }}public class DeleteNode {    public static void main(String[] args) {        ZkClient zkClient = new ZkClient("119.45.52.68:2181");        zkClient.deleteRecursive("/zkclient");        System.out.println("success delete node");    }}public class GetChildrenChanged {    public static void main(String[] args) throws Exception{        ZkClient zkClient = new ZkClient("119.45.52.68:2181");        zkClient.createPersistent("/zkClient");        Thread.sleep(1000);        List<String> children = zkClient.getChildren("/zkClient");        System.out.println(children);        zkClient.subscribeChildChanges("/zkClient", new IZkChildListener() {            @Override            public void handleChildChange(String parentPath, List<String> currentChilds) throws Exception {                System.out.println("父门路"+parentPath+"以后子门路的"+currentChilds);            }        });        zkClient.createPersistent("/zkClient/child1");        Thread.sleep(1000);        zkClient.delete("/zkClient/child1");        Thread.sleep(Integer.MAX_VALUE);    }}public class GetNodeData {    public static void main(String[] args) throws Exception{        String path = "/zkclient-node";        ZkClient zkClient = new ZkClient("119.45.52.68:2181");        boolean exist = zkClient.exists(path);        if (!exist){            zkClient.createEphemeral(path,"123");        }        zkClient.subscribeDataChanges(path, new IZkDataListener() {            @Override            public void handleDataChange(String dataPath, Object data) throws Exception {                System.out.println(dataPath+"节点内容被更新"+data);            }            @Override            public void handleDataDeleted(String dataPath) throws Exception {                System.out.println(dataPath+"节点内容被删除");            }        });        Object o = zkClient.readData(path);        System.out.println(o);        zkClient.writeData(path,"4567");        Thread.sleep(2000);        zkClient.delete(path);        Thread.sleep(2000);    }}

curator操作api应用

public class CreateSession {    public static void main(String[] args) {        //curator第一种创立回话形式        RetryPolicy retryPolicy = new ExponentialBackoffRetry(1000,3);        CuratorFramework curatorFramework = CuratorFrameworkFactory.newClient("119.45.52.68:2181",                5000,3000,retryPolicy);        curatorFramework.start();        System.out.println("create session success");        //第二种形式        CuratorFramework client =CuratorFrameworkFactory.builder()                .connectString("119.45.52.68:2181")                .sessionTimeoutMs(5000)                .sessionTimeoutMs(3000)                .retryPolicy(retryPolicy)                .namespace("base")                .build();        client.start();        System.out.println("createe session2 success ");    }}public class CreateNode {    public static void main(String[] args) throws  Exception{        RetryPolicy retryPolicy = new ExponentialBackoffRetry(1000,3);        CuratorFramework client = CuratorFrameworkFactory.builder()                .connectString("119.45.52.68:2181")                .sessionTimeoutMs(5000)                .sessionTimeoutMs(3000)                .retryPolicy(retryPolicy)                //.namespace("base")                .build();        client.start();        String path = "/curator/child1";        client.create().creatingParentContainersIfNeeded()                .withMode(CreateMode.PERSISTENT)                .forPath(path,"init".getBytes());        System.out.println("success create node");    }}public class DeleteNode {    public static void main(String[] args) throws Exception{        RetryPolicy retryPolicy = new ExponentialBackoffRetry(1000,3);        CuratorFramework client = CuratorFrameworkFactory.builder()                .connectString("119.45.52.68:2181")                .sessionTimeoutMs(5000)                .sessionTimeoutMs(3000)                .retryPolicy(retryPolicy)                //.namespace("base")                .build();        client.start();        String path = "/curator";        client.delete().deletingChildrenIfNeeded().withVersion(-1).forPath(path);        System.out.println("delete node success ");    }}public class GetNodeData {    public static void main(String[] args) throws Exception{        RetryPolicy retryPolicy = new ExponentialBackoffRetry(1000,3);        CuratorFramework client = CuratorFrameworkFactory.builder()                .connectString("119.45.52.68:2181")                .sessionTimeoutMs(5000)                .sessionTimeoutMs(3000)                .retryPolicy(retryPolicy)                //.namespace("base")                .build();        client.start();        String path = "/curator/child1";        client.create().creatingParentContainersIfNeeded()                .withMode(CreateMode.PERSISTENT)                .forPath(path,"init".getBytes());        System.out.println("success create node");        Stat stat = new Stat();        byte [] data = client.getData().storingStatIn(stat).forPath(path);        System.out.println("数据为"+new String(data));    }}public class UpdateNodeData {    public static void main(String[] args) throws Exception{        RetryPolicy retryPolicy = new ExponentialBackoffRetry(1000,3);        CuratorFramework client = CuratorFrameworkFactory.builder()                .connectString("119.45.52.68:2181")                .sessionTimeoutMs(5000)                .sessionTimeoutMs(3000)                .retryPolicy(retryPolicy)                //.namespace("base")                .build();        client.start();        String path = "/curator/child1";//        client.create().creatingParentContainersIfNeeded()//                .withMode(CreateMode.PERSISTENT)//                .forPath(path,"init".getBytes());//        System.out.println("success create node");        Stat stat = new Stat();        byte [] data = client.getData().storingStatIn(stat).forPath(path);        System.out.println("数据为"+new String(data));        int version = client.setData().withVersion(stat.getVersion()).forPath(path).getVersion();        System.out.println("update node "+path+" version "+version);        client.setData().withVersion(stat.getVersion()).forPath(path).getAversion();    }}

最初一行代码会报错,起因是不能设置同样的数据版本。

除了上述的两种zkclient和curatir的罕用操作。还有一些其余操作都能够去尝试
代码的地址为https://github.com/zhendiao/deme-code/tree/main/zk

欢送搜寻关注自己与敌人共同开发的微信面经小程序【大厂面试助手】和公众号【微瞰技术】