`
weitao1026
  • 浏览: 1043707 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Curator是Netflix开源的一套ZooKeeper客户端框架

阅读更多

Curator是Netflix开源的一套ZooKeeper客户端框架,用它来操作zookeeper更加简单方便,按Curator官方所比喻的,guava to JAVA, Curator to Zookeeper,Curator采用了fluent风格的代码,非常简洁。

有关curator的介绍:请参照官方文档:http://curator.apache.org/index.html

本篇主要看下,使用curator操作zookeeper的一些基础例子:
主要的功能:
1,在zk上添加,或更新数据
2,删除zk节点上数据
3,读取某个节点上的数据
4,上传一些本地文件到zk节点上
5,检查zookeeper上是否存在某个节点路径

核心代码如下:

Java代码 复制代码 收藏代码
  1. package com.qin.curator.zk;  
  2.   
  3. import java.io.File;  
  4. import java.util.List;  
  5.   
  6. import org.apache.commons.io.FileUtils;  
  7. import org.apache.curator.CuratorZookeeperClient;  
  8. import org.apache.curator.RetryPolicy;  
  9. import org.apache.curator.framework.CuratorFramework;  
  10. import org.apache.curator.framework.CuratorFrameworkFactory;  
  11. import org.apache.curator.framework.CuratorFrameworkFactory.Builder;  
  12. import org.apache.curator.framework.api.CreateBuilder;  
  13. import org.apache.curator.retry.ExponentialBackoffRetry;  
  14. import org.apache.zookeeper.WatchedEvent;  
  15. import org.apache.zookeeper.Watcher;  
  16. import org.apache.zookeeper.ZKUtil;  
  17.   
  18. import framework.CrudExamples;  
  19. /** 
  20.  * @author qindongliang 
  21.  * curator操作zookeeper的 
  22.  * 基本例子 
  23.  * **/  
  24. public class CuratorTools {  
  25.       
  26.     static CuratorFramework zkclient=null;  
  27.     static String nameSpace="php";  
  28.     static {  
  29.           
  30.           String zkhost="192.168.46.22:2181";//zk的host  
  31.           RetryPolicy rp=new ExponentialBackoffRetry(10003);//重试机制  
  32.           Builder builder = CuratorFrameworkFactory.builder().connectString(zkhost)  
  33.                   .connectionTimeoutMs(5000)  
  34.                   .sessionTimeoutMs(5000)  
  35.                   .retryPolicy(rp);  
  36.           builder.namespace(nameSpace);  
  37.           CuratorFramework zclient = builder.build();  
  38.           zkclient=zclient;  
  39.           zkclient.start();// 放在这前面执行  
  40.           zkclient.newNamespaceAwareEnsurePath(nameSpace);  
  41.             
  42.     }  
  43.       
  44.     public static void main(String[] args)throws Exception {  
  45.         CuratorTools ct=new  CuratorTools();  
  46.         //ct.getListChildren("/zk/bb");  
  47.         //ct.upload("/jianli/123.txt", "D:\\123.txt");  
  48.         //ct.createrOrUpdate("/zk/cc334/zzz","c");  
  49.         //ct.delete("/qinb/bb");  
  50.         //ct.checkExist("/zk");  
  51.         ct.read("/jianli/123.txt");  
  52.         zkclient.close();  
  53.           
  54.           
  55.     }  
  56.   
  57.     /** 
  58.      * 创建或更新一个节点 
  59.      *  
  60.      * @param path 路径 
  61.      * @param content 内容 
  62.      * **/  
  63.     public void createrOrUpdate(String path,String content)throws Exception{  
  64.            
  65.         zkclient.newNamespaceAwareEnsurePath(path).ensure(zkclient.getZookeeperClient());  
  66.         zkclient.setData().forPath(path,content.getBytes());      
  67.         System.out.println("添加成功!!!");  
  68.           
  69.     }  
  70.       
  71.     /** 
  72.      * 删除zk节点 
  73.      * @param path 删除节点的路径 
  74.      *  
  75.      * **/  
  76.     public void delete(String path)throws Exception{  
  77.         zkclient.delete().guaranteed().deletingChildrenIfNeeded().forPath(path);  
  78.         System.out.println("删除成功!");  
  79.     }  
  80.       
  81.       
  82.     /** 
  83.      * 判断路径是否存在 
  84.      * @param path 
  85.      * **/  
  86.     public void checkExist(String path)throws Exception{  
  87.           
  88.         if(zkclient.checkExists().forPath(path)==null){  
  89.             System.out.println("路径不存在!");  
  90.         }else{  
  91.             System.out.println("路径已经存在!");  
  92.         }  
  93.           
  94.     }  
  95.       
  96.     /** 
  97.      * 读取的路径 
  98.      * @param path 
  99.      * **/  
  100.     public void read(String path)throws Exception{  
  101.            
  102.        
  103.         String data=new String(zkclient.getData().forPath(path),"gbk");  
  104.           
  105.         System.out.println("读取的数据:"+data);  
  106.           
  107.     }  
  108.       
  109.       
  110.     /** 
  111.      * @param path 路径 
  112.      * 获取某个节点下的所有子文件 
  113.      * */  
  114.     public void getListChildren(String path)throws Exception{  
  115.           
  116.         List<String> paths=zkclient.getChildren().forPath(path);  
  117.         for(String p:paths){  
  118.             System.out.println(p);  
  119.         }  
  120.           
  121.     }  
  122.       
  123.     /** 
  124.      * @param zkPath zk上的路径 
  125.      * @param localpath 本地上的文件路径 
  126.      *  
  127.      * **/  
  128.     public void upload(String zkPath,String localpath)throws Exception{  
  129.           
  130.         createrOrUpdate(zkPath, "");//创建路径  
  131.         byte[] bs=FileUtils.readFileToByteArray(new File(localpath));  
  132.         zkclient.setData().forPath(zkPath, bs);  
  133.         System.out.println("上传文件成功!");  
  134.           
  135.           
  136.     }  }  
分享到:
评论

相关推荐

    zookeeper开源客户端Curator

    Curator是Netflix公司开源的一套ZooKeeper客户端框架,Curator解决了很多ZooKeeper客户端非常底层的细节开发工作,包括连接重连、反复注册Watcher和NodeExistsException异常等,实现了Fluent风格的API接口,目前已经...

    浅谈Zookeeper开源客户端框架Curator

    Curator是一个基于Zookeeper的开源客户端框架,由Netflix开发,旨在解决Zookeeper客户端使用过程中的各种问题。Curator提供了封装ZooKeeper client与ZooKeeper server之间的连接处理、提供了一套Fluent风格的操作API...

    zookeeper实战

    Curator是Netflix开源的ZooKeeper客户端框架,它提供了一套高级API来简化ZooKeeper客户端的使用。Curator封装了许多常见的操作,使得开发者可以更加方便地利用ZooKeeper的特性,无需深入底层细节。Curator的常用API...

    VIP-02 Zookeeper客户端使用与集群特性(1)

    Curator是Netflix公司开源的一个针对ZooKeeper的高级Java客户端框架。它不仅简化了ZooKeeper的使用,还提供了丰富的抽象和工具类,使得开发者能够更加专注于业务逻辑而不用过多关注ZooKeeper的具体实现细节。Curator...

    4、zookeeper的java三种客户端介绍-Curator(crud、事务操作、监听、分布式计数器、分布式锁)

    Apache Curator是由Netflix开源,现已成为Apache顶级项目的Zookeeper客户端。它旨在提供更高级别的API和实用工具,使得使用Zookeeper变得更加简单和可靠: 1. 解决了Watcher一次性触发的问题,提供了可持久化的监听...

    0806分布式协调服务笔记1

    Curator是Netflix开源的Zookeeper客户端,它提供了一系列的高级抽象和工具,如curator-framework的Fluent风格API,简化了Zookeeper的操作。curator-replica则封装了复制和故障转移的逻辑,简化了应用开发。Curator还...

    finagle-thriftmux_2.9.2-6.4.1.zip

    【描述】"curator.zip,由netflixzookeeper客户端包装和富zookeeper框架开发的馆长" 提到的是Netflix Curator,这是一个用于Apache ZooKeeper的Java客户端库。ZooKeeper是一个分布式协调服务,常用于管理分布式应用中...

    springcloud集成zookeeper的方法示例

    Curator 是 Netflix 公司开源的一个 ZooKeeper 客户端,与 ZooKeeper 提供的原生客户端相比,Curator 的抽象层次更高,简化了 ZooKeeper 客户端编程。 最后,我们可以使用 CuratorFramework 来访问和操作 ZooKeeper...

    使用curator实现zookeeper锁服务的示例分享

    Curator是Netflix开源的一个用于简化Zookeeper使用的Java客户端库,它提供了很多高级功能,包括分布式锁、事件监听、配方等。在这个示例中,我们将使用Curator的`InterProcessMutex`类来实现分布式互斥锁(Mutex)。...

    boson-0.0.5.zip

    Netflix Curator是一个流行的开源库,专为Apache ZooKeeper设计,用于简化ZooKeeper的使用。ZooKeeper是一个分布式协调服务,广泛用于管理和维护分布式系统的配置信息、命名服务、分布式同步、组服务等。Curator通过...

    raycloud

    在Java世界里,Netflix Eureka和Apache ZooKeeper是常用的服务发现框架。Eureka提供了RESTful接口进行服务注册与发现,而ZooKeeper则是一个分布式的、开放源码的协调服务,适用于配置维护、名字服务、分布式同步等。...

Global site tag (gtag.js) - Google Analytics