Apache Curator入门实战

Apache Curator入门实战

Curator是Netflix公司开源的一个Zookeeper客户端,与Zookeeper提供的原生客户端相比,Curator的抽象层次更高,简化了Zookeeper客户端的开发量。

1.Zookeeper安装部署

Zookeeper的部署很简单,如果已经有Java运行环境的话,下载tarball解压后即可运行。

[root-3.4.6/zookeeper-3.4.6.tar.gz[root@vm Temp]$ tar zxvf zookeeper-3.4.6.tar.gz[root@vm Temp]$ cd zookeeper-3.4.6[root@vm zookeeper-3.4.6]$ cp conf/zoo_sample.cfg conf/zoo.cfg[root@vm zookeeper-3.4.6]$ export ZOOKEEPER_HOME=/usr/local/src/zookeeper-3.4.5[root@vm zookeeper-3.4.6]$ export PATH=$ZOOKEEPER_HOME/bin:$PATH[root@vm zookeeper-3.4.6]$ bin/zkServer.sh start[root2.客户端常用操作

用zkCli.sh连接上Zookeeper服务后,用help能列出所有命令:

[root@BC-VM-edce4ac67d304079868c0bb265337bd4 zookeeper-3.4.6]# bin/zkCli.sh -127.0.0.1:2181Connecting to localhost:::09 GMT…[zk: localhost:2181(CONNECTED) 5] helpZooKeeper -server host:port cmd argsconnect host:portget path [watch]ls path [watch]set path data [version]rmr pathdelquota [-n|-b] pathquitprintwatches on|offcreate [-s] [-e] path data aclstat path [watch]closels2 path [watch]historylistquota pathsetAcl path aclgetAcl pathsync pathredo cmdnoaddauth scheme authdelete path [version]setquota -n|-b val path

下面就试验一下常用的命令:

[zk: localhost:2181(CONNECTED) 6] create /zktest mydataCreated /zktest[zk: localhost:2181(CONNECTED) 12] ls /[zktest, zookeeper][zk: localhost:2181(CONNECTED) 7] ls /zktest[][zk: localhost:2181(CONNECTED) 13] get /zktestmydatacZxid = 0x1cctime = Thu Jun 11 10:58:06 CST 2015mZxid = 0x1cmtime = Thu Jun 11 10:58:06 CST 2015pZxid = 0x1ccversion = 0dataVersion = 0aclVersion = 0ephemeralOwner = 0x0dataLength = 6numChildren = 0[zk: localhost:2181(CONNECTED) 14] set /zktest junkcZxid = 0x1cctime = Thu Jun 11 10:58:06 CST 2015mZxid = 0x1fmtime = Thu Jun 11 10:59:08 CST 2015pZxid = 0x1ccversion = 0dataVersion = 1aclVersion = 0ephemeralOwner = 0x0dataLength = 4numChildren = 0[zk: localhost:2181(CONNECTED) 15] delete /zktest[zk: localhost:2181(CONNECTED) 16] ls /[zookeeper]3.用Curator管理Zookeeper

Curator的Maven依赖如下,,一般直接使用curator-recipes就行了,如果需要自己封装一些底层些的功能的话,例如增加连接管理重试机制等,则可以引入curator-framework包。

>curator-recipes>3.1 Client操作

利用Curator提供的客户端API,可以完全实现上面原生客户端的功能。值得注意的是,Curator采用流式风格API。

package com.cdai.codebase.bigdata.hadoop.zookeeper.curator;import org.apache.curator.framework.CuratorFramework;import org.apache.curator.framework.CuratorFrameworkFactory;import org.apache.curator.retry.RetryNTimes;/** * Curator framework’s client test. * Output: * $ create /zktest hello * $ ls / * [zktest, zookeeper] * $ get /zktest * hello * $ set /zktest world * $ get /zktest * world * $ delete /zktest * $ ls / * [zookeeper] */{String ZK_ADDRESS = “192.168.1.100:2181”;String ZK_PATH = “/zktest”;(String[] args) throws Exception {// 1.Connect to zkCuratorFramework client = CuratorFrameworkFactory.newClient(ZK_ADDRESS,new RetryNTimes(10, 5000));client.start();System.out.println(“zk client start successfully!”);// 2.Client API test// 2.1 Create nodeString data1 = “hello”;print(“create”, ZK_PATH, data1);client.create().creatingParentsIfNeeded().forPath(ZK_PATH, data1.getBytes());// 2.2 Get node and dataprint(“ls”, “/”);print(client.getChildren().forPath(“/”));print(“get”, ZK_PATH);print(client.getData().forPath(ZK_PATH));// 2.3 Modify dataString data2 = “world”;print(“set”, ZK_PATH, data2);client.setData().forPath(ZK_PATH, data2.getBytes());print(“get”, ZK_PATH);print(client.getData().forPath(ZK_PATH));// 2.4 Remove nodeprint(“delete”, ZK_PATH);client.delete().forPath(ZK_PATH);print(“ls”, “/”);print(client.getChildren().forPath(“/”));}(String… cmds) {StringBuilder text = new StringBuilder(“$ “);for (String cmd : cmds) {text.append(cmd).append(” “);}System.out.println(text.toString());}(Object result) {System.out.println(result instanceof byte[]? new String((byte[]) result): result);}}3.2 监听器

Curator提供了三种Watcher(Cache)来监听结点的变化:

销售世界上第一号的产品–不是汽车,而是自己。

Apache Curator入门实战

相关文章:

你感兴趣的文章:

标签云: