100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > Zookeeper客户端zkClient和curator的操作

Zookeeper客户端zkClient和curator的操作

时间:2023-04-05 16:58:12

相关推荐

Zookeeper客户端zkClient和curator的操作

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() {@Overridepublic 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() {@Overridepublic void handleDataChange(String dataPath, Object data) throws Exception {System.out.println(dataPath+"节点内容被更新"+data);}@Overridepublic 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的常用操作。还有一些其他操作都可以去尝试 代码的地址为/zhendiao/deme-code/tree/main/zk

欢迎搜索关注本人的公众号【微瞰技术】,以及总结的分类面试题/zhendiao/JavaInterview

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。