Curator 是 Netflix 公司开源的一套 zookeeper 客户端框架,解决了很多 Zookeeper 客户端非常底层的细节开发工作,
包括连接重连、反复注册 Watcher 和 NodeExistsException 异常等。
Curator 包含了几个包:
curator-framework:对 zookeeper 的底层 api 的一些封装。
curator-client:提供一些客户端的操作,例如重试策略等。
curator-recipes:封装了一些高级特性,如:Cache 事件监听、选举、分布式锁、分布式计数器、分布式 Barrier 等。
package com..zookeeper.GWdemo; import org.apache.curator.framework.CuratorFramework; import org.apache.curator.framework.CuratorFrameworkFactory; import org.apache.curator.retry.ExponentialBackoffRetry; import org.apache.zookeeper.data.Stat; /** * 官网示例--读取数据 */ public class CuratorDemo { // 从zookeeper 读取数据, /runoob节点必须存在 public static void main(String[] args) throws Exception { CuratorFramework curatorFramework=CuratorFrameworkFactory. builder().connectString("127.0.0.1:2181," + "127.0.0.1:2182,127.0.0.1:2183"). sessionTimeoutMs(4000).retryPolicy(new ExponentialBackoffRetry(1000,3)). namespace("").build(); curatorFramework.start(); Stat stat=new Stat(); byte[] bytes = curatorFramework.getData().storingStatIn(stat).forPath("/runoob"); //有中文,先多试几种编码! System.out.println("读取输出 : "+new String(bytes,"GBK")); System.out.println("读取输出 : "+new String(bytes,"UTF-8")); System.out.println("读取输出 : "+new String(bytes,"GB2312")); System.out.println("读取输出 : "+new String(bytes,"ISO-8859-1")); curatorFramework.close(); } }
结果: