`

Curator Framework的基本使用方法

 
阅读更多
Curator Framework提供了简化使用zookeeper更高级的API接口。它包涵很多优秀的特性,主要包括以下三点:

自动连接管理:自动处理zookeeper的连接和重试存在一些潜在的问题;可以watch NodeDataChanged event和获取updateServerList;Watches可以自动被Cruator recipes删除;
更干净的API:简化raw zookeeper方法,事件等;提供现代流式API接口
Recipe实现:leader选举,分布式锁,path缓存,和watcher,分布式队列等。
Zookeeper在实际生产环境中应用比较广泛,比如SOA的服务监控系统,Hadoop,spark的分布式调度系统。Curator框架提供的优秀特性可以使得我们更加便捷的开发zookeeper应用。本文主要讲解了curator的基本使用方法。

CuratorFramework实例创建

Curator框架通过CuratorFrameworkFactory以工厂模式和builder模式创建CuratorFramework实例。 CuratorFramework实例都是线程安全的,我们应该当在ZooKeeper Cluster中共享同一个CuratorFramework实例。工厂方法newClient() 提供了简便创建client实例方式,使用start和close方法启动和关闭客户端。使用Curator框架创建客户端代码如下,

RetryPolicy retryPolicy = new ExponentialBackoffRetry(1000, 3);
CuratorFramework newClient=CuratorFrameworkFactory.newClient("localhost:2181", retryPolicy);


操作数据节点

zookeeper中,节点的组织类似于linux的文件系统,使用path来标识每个节点(znode),znode作为保存数据的容器,数据量限制在1M以内,这部分介绍如何使用curator框架创建,获取,更新,以及删除节点。

创建节点

Curator创建znode节点代码如下所示:

public void createNode(CuratorFramework newClient, String path, CreateMode createMode, String data) {
        try {
            newClient.create().withMode(createMode).forPath(path, data.getBytes());
        } catch (Exception e) {
            System.out.println("创建节点失败, elog=" + e.getMessage());
        }
}


zookeeper中节点有两种类型,临时节点和永久节点,CreateMode类用于指定创建节点的类型,用户可以选择以下几个参数:

CreateMode.PERSISTENT: 创建节点后,不删除就永久存在
CreateMode.PERSISTENT_SEQUENTIAL:节点path末尾会追加一个10位数的单调递增的序列
CreateMode.EPHEMERAL:创建后,回话结束节点会自动删除
CreateMode.EPHEMERAL_SEQUENTIAL:节点path末尾会追加一个10位数的单调递增的序列
forPath函数指定创建节点的path和保存的数据,path的指定遵循linux文件path格式,创建node时指定的path,父path节点需要存在,否则创建节点失败,比如创建"/parent/child"节点,若不存在节点"parent",那么创建节点会失败。在znode中保存的数据需要进行序列化,用户可以选择使用JSON,XML,java内置的序列化机制,或者Hession以及Google的protocal Buffer等,为方便讲解,节点存储字符串数据。

获取节点数据

CuratorFramework提供getData函数,通过指定znode的path,就可以完成数据的获取。

public String getData(CuratorFramework newClient, String path){
    try {
        return new String(newClient.getData().forPath(path));
    } catch (Exception e) {
        System.out.println("获取数据失败, elog=" + e.getMessage());
    }
    return null;
}


更新节点

同样CuratorFramework提供setData函数,通过指定znode的path,可以完成数据的更新。

public void updateNodeDate(CuratorFramework newClient, String path, String data) {
    try {
        newClient.setData().forPath(path, data.getBytes());
    } catch (Exception e) {
        System.out.println("更新节点数据失败, elog=" + e.getMessage());
    }
}


删除节点

和获取,更新节点类似,CuratorFramework提供delete函数,指定znode的path删除某一个节点。

public void deleteNode(CuratorFramework newClient, String path) {
    try {
        newClient.delete().forPath(path);
    } catch (Exception e) {
        System.out.println("删除节点失败, elog=" + e.getMessage());
    }
}


Conclusion

本文和大家分享了CuratorFramework的基本使用方法,希望能对大家有所帮助。更多的使用方式可以参考官方给出的API文档。

参考:http://www.cnblogs.com/jun-ma/p/4918137.html

     http://090508tanjie.iteye.com/blog/2288256
    
    http://blog.csdn.net/sqh201030412/article/details/51446434
分享到:
评论

相关推荐

    curator-framework-2.6.0-API文档-中文版.zip

    赠送jar包:curator-framework-2.6.0.jar; 赠送原API文档:curator-framework-2.6.0-javadoc.jar; 赠送源代码:curator-framework-2.6.0-sources.jar; 赠送Maven依赖信息文件:curator-framework-2.6.0.pom; ...

    curator-framework-4.3.0-API文档-中英对照版.zip

    赠送jar包:curator-framework-4.3.0.jar; 赠送原API文档:curator-framework-4.3.0-javadoc.jar; 赠送源代码:curator-framework-4.3.0-sources.jar; 赠送Maven依赖信息文件:curator-framework-4.3.0.pom; ...

    curator-framework-4.0.1-API文档-中文版.zip

    赠送jar包:curator-framework-4.0.1.jar; 赠送原API文档:curator-framework-4.0.1-javadoc.jar; 赠送源代码:curator-framework-4.0.1-sources.jar; 赠送Maven依赖信息文件:curator-framework-4.0.1.pom; ...

    Zookeeper客户端Curator Framework使用代码

    Zookeeper客户端Curator Framework示例代码,博客详解链接:https://blog.csdn.net/u010889616/article/details/80209629

    curator-framework-2.6.0-API文档-中英对照版.zip

    赠送jar包:curator-framework-2.6.0.jar; 赠送原API文档:curator-framework-2.6.0-javadoc.jar; 赠送源代码:curator-framework-2.6.0-sources.jar; 赠送Maven依赖信息文件:curator-framework-2.6.0.pom; ...

    curator-framework-4.0.1-API文档-中英对照版.zip

    赠送jar包:curator-framework-4.0.1.jar; 赠送原API文档:curator-framework-4.0.1-javadoc.jar; 赠送源代码:curator-framework-4.0.1-sources.jar; 赠送Maven依赖信息文件:curator-framework-4.0.1.pom; ...

    curator-framework-2.4.2.jar

    Curator解决了很多Zookeeper客户端非常底层的细节开发工作,包括连接重连,反复注册Watcher和NodeExistsException异常等,现已成为Apache的顶级项目。

    curator-framework-5.1.0.jar

    高级 API 极大地简化了 ZooKeeper 的使用。 org.apache.curator/curator-framework/5.1.0/curator-framework-5.1.0.jar

    zookeeper客户端curator操作示例

    zookeeper客户端curator操作示例

    curator-framework-3.3.0.jar

    高级 API 极大地简化了 ZooKeeper 的使用。 org.apache.curator/curator-framework/3.3.0/curator-framework-3.3.0.jar

    curator-framework-4.3.0.jar

    高级 API 极大地简化了 ZooKeeper 的使用。 org.apache.curator/curator-framework/4.3.0/curator-framework-4.3.0.jar

    netflix.curator

    netflix.curatorThe Curator Framework is a high-level API that greatly simplifies using ZooKeeper. It adds many features that build on ZooKeeper and handles the complexity of managing connections to ...

    curator-framework-4.1.0.jar

    高级 API 极大地简化了 ZooKeeper 的使用。 org.apache.curator/curator-framework/4.1.0/curator-framework-4.1.0.jar

    curator-framework-4.0.1.jar

    高级 API 极大地简化了 ZooKeeper 的使用。 org.apache.curator/curator-framework/4.0.1/curator-framework-4.0.1.jar

    curator-framework-2.11.1.jar

    高级 API 极大地简化了 ZooKeeper 的使用。 org.apache.curator/curator-framework/2.11.1/curator-framework-2.11.1.jar

    zk客户端curator2.11

    客户端是Curator Framework,是Apache的项目,它主要的功能是为ZK的客户端使用提供了高可用的封装。在Curator Framework基础上封装的curator-recipes,实现了很多经典场景。比如:集群管理(Leader选举)、共享锁、...

    curator-framework-2.11.0.jar

    高级 API 极大地简化了 ZooKeeper 的使用。 org.apache.curator/curator-framework/2.11.0/curator-framework-2.11.0.jar

    curator-framework-3.1.0.jar

    高级 API 极大地简化了 ZooKeeper 的使用。 org.apache.curator/curator-framework/3.1.0/curator-framework-3.1.0.jar

    curator-framework-2.13.0.jar

    高级 API 极大地简化了 ZooKeeper 的使用。 org.apache.curator/curator-framework/2.13.0/curator-framework-2.13.0.jar

    curator-framework-2.10.0.jar

    高级 API 极大地简化了 ZooKeeper 的使用。 org.apache.curator/curator-framework/2.10.0/curator-framework-2.10.0.jar

Global site tag (gtag.js) - Google Analytics