zookeeper的客户端有自带的命令行程序,也有API接口。
命令行客户端
ls / // 查看根目录
ls -s / // 查看根目录详细信息
create /apple/iPhone "iPhone 13" // 创建节点并设置值(永久节点)
get /apple/iPhone // 查看节点值
get -s /apple/iPhone // 查看节点详细信息
create -s /apple/iPhone "iPhone 14" // 创建一个给路径添加序号后缀的节点(永久节点)
create -e /apple/Mac "MacBook Pro 14" // 创建临时节点
set /apple/iPhone 'iPhone 13 pro' // 修改节点值
delete /apple/iPhone // 删除节点,无法递归删除
deleteall /apple // 删除节点,递归删除
stat /apple // 查看节点状态信息
Java API 客户端分类
1、原生Java client
接口比较基础,自行补充的代码较多。
<dependency>
<groupId>org.apache.zookeeper</groupId>
<artifactId>zookeeper</artifactId>
<version>3.8.0</version>
</dependency>
public class ZkClientTest {
private String zkServer = "192.168.1.1:2128,192.168.1.2:2128";
private static ZooKeeper zkClient;
public void connectZk() throws IOException {
zkClient = new ZooKeeper(zkServer, 2000, new Watcher() {
@Override
public void process(WatchedEvent watchedEvent) {
}
});
}
public void createZkNode() throws KeeperException, InterruptedException {
zkClient.create("/apple/ipad", "ipad air 5".getBytes(StandardCharsets.UTF_8), ZooDefs.Ids.OPEN_ACL_UNSAFE,
CreateMode.EPHEMERAL);
}
}
2、zkclient
早年比较好,后面没更新,不建议使用。
<dependency>
<groupId>com.github.adyliu</groupId>
<artifactId>zkclient</artifactId>
<version>2.2.0</version>
</dependency>
3、curator
目前最合适的zookeeper客户端,dubbo也在使用。
<dependency>
<groupId>org.apache.curator</groupId>
<artifactId>curator-framework</artifactId>
<version>5.2.0</version>
</dependency>