JAVA操作zookeeper
对于 Java 开发者而言掌握Java 语言操作 ZooKeeper的核心能力是理解分布式协作原理、落地分布式解决方案的必备基础。无论是基于原生 ZooKeeper 客户端实现基础功能还是使用 Curator 等简化框架提升开发效率都需要从核心 API、连接机制、数据节点操作、监听机制、异常处理等维度系统学习。第一步导入Curator工具包dependency groupIdorg.apache.curator/groupId artifactIdcurator-framework/artifactId version4.2.0/version /dependency dependency groupIdorg.apache.curator/groupId artifactIdcurator-recipes/artifactId version4.2.0/version /dependency dependency groupIdcom.google.collections/groupId artifactIdgoogle-collections/artifactId version1.0/version /dependency dependency groupIdjunit/groupId artifactIdjunit/artifactId versionRELEASE/version /dependency dependency groupIdorg.slf4j/groupId artifactIdslf4j-simple/artifactId version1.7.25/version /dependency第二步测试连接package com.qyh; import org.apache.curator.RetryPolicy; import org.apache.curator.framework.CuratorFramework; import org.apache.curator.framework.CuratorFrameworkFactory; import org.apache.curator.framework.recipes.cache.ChildData; import org.apache.curator.framework.recipes.cache.TreeCache; import org.apache.curator.framework.recipes.cache.TreeCacheEvent; import org.apache.curator.framework.recipes.cache.TreeCacheListener; import org.apache.curator.retry.ExponentialBackoffRetry; import org.apache.zookeeper.CreateMode; import org.junit.After; import org.junit.Before; import org.junit.Test; import java.util.List; /** * 创建人: author ZZY * 创建时间: 2026-04-07 15:55 */ public class TestZK { CuratorFramework curator null; Before public void init(){ RetryPolicy retryPolicy new ExponentialBackoffRetry(1000, 2); curator CuratorFrameworkFactory.newClient(hadoop11:2181, retryPolicy); curator.start(); } After public void destroy(){ curator.close(); } Test public void testCreate() throws Exception { curator.create().creatingParentContainersIfNeeded().withMode(CreateMode.PERSISTENT).forPath(/bigdata01/aaa); } Test public void testLs() throws Exception { ListString list curator.getChildren().forPath(/); System.out.println(list); } Test public void testSet() throws Exception { curator.setData().forPath(/bigdata01, 12345,上山打老虎.getBytes()); } Test public void testGet() throws Exception { byte[] bytes curator.getData().forPath(/bigdata01); System.out.println(new String(bytes)); } Test public void testDel() throws Exception { curator.delete().forPath(/bigdata01/aaa); } Test public void testWatch() throws Exception { TreeCache treeCache new TreeCache(curator, /bigdata01); treeCache.getListenable().addListener(new TreeCacheListener() { Override public void childEvent(CuratorFramework curatorFramework, TreeCacheEvent treeCacheEvent) throws Exception { TreeCacheEvent.Type type treeCacheEvent.getType(); ChildData data treeCacheEvent.getData(); if (typeTreeCacheEvent.Type.NODE_ADDED){ System.out.println(创建了一个新的节点data.getPath()); } if (typeTreeCacheEvent.Type.NODE_REMOVED){ System.out.println(移除了一个节点data.getPath()); } if (typeTreeCacheEvent.Type.NODE_UPDATED){ System.out.println(修改了一个节点data.getPath()); } } }); treeCache.start(); Thread.sleep(1000*1000); } }