本节包含信息可以让你快速入门zookeeper。它主要针对想尝试使用zookeeper的开发者,并包含一个ZooKeeper单机服务器的安装说明,并且可以用一些命令来验证它的运行,以及简单的编程实例。最后,为了考虑到方便性,有一些复杂的安装部分,例如运行集群式的部署安装,优化事务日志将不在本文档中说明。对于商业部署的完整说明,请参阅管理员指南。
请看下管理员指南中的 System Requirements 。
从Apache 镜像里面下载最近的一个稳定版本ZooKeeper 。
在单机模式中配置一个ZooKeeper服务器是非常简单的。一个JAR文件里包含了这个服务,安装需要创建一个配置文件。
一旦你下载了一个稳定版的ZooKeeper,解压它并用cd命令进入root目录
你需要配置一个文件来启动ZooKeeper,下面有个例子,创建一个文件conf/zoo.cfg:
tickTime=2000 dataDir=/var/lib/zookeeper clientPort=2181
可以用任何应用程序打开conf/zoo.cfg。并且可以通过改变 dataDir的值来指定一个新的目录。每个字段的含义如下:
当这些都配置好之后,就可以使用如下命令启动zookeeper:
bin/zkServer.sh start
Zookeeper的日志使用了log4j,更多细节信息请查看zookeeper程序指南中的Logging章节,
你可以从控制台看到日志信息,或者从log4j的配置的日志文件中查看日志。 这一小节,主要讲了如何启动单机模式的zookeeper。在这里没有使用集群的设置,一旦ZooKeeper 进程出现故障,服务就会终止,这对于大多数时候的开发环境是没问题的,但想要运行以集群的方式来运行ZooKeeper ,请查看Running Replicated ZooKeeper。
对于长时间运行的生产系统 ,ZooKeeper存储必须要经常维护(dataDir和日志)。如果想了解更多细节请看maintenance章节。
一旦Zookeeper运行起来,你可以有多种方式来连接它: java: c: 一旦你连接上Zookeeper你会看到下面这些信息:
Connecting to localhost:2181
log4j:WARN No appenders could be found for logger (org.apache.zookeeper.ZooKeeper).
log4j:WARN Please initialize the log4j system properly.
Welcome to ZooKeeper! JLine support is enabled
[zkshell: 0]
从shell端你输入help,获得一个可以在客户端执行的命令清单,如下所示:
[zkshell: 0] help
ZooKeeper host:port cmd args
get path [watch]
ls path [watch]
set path data [version]
delquota [-n|-b] path
quit
printwatches on|off
create path data acl
stat path [watch]
listquota path
history
setAcl path acl
getAcl path
sync path
redo cmdno
addauth scheme auth
delete path [version]
deleteall path
setquota -n|-b val path
从这里,你可以尝试一些简单的命令来了解这个命令行接口。首先,开始通过发一行命令,如ls,
[zkshell: 8] ls / [zookeeper]
接下来,创建一个新的znode通过运行创建/ zk测试我的数据。这将创建一个新的znode和同事字符串“数据”节点。您应该看到
[zkshell: 9] create /zk_test my_data
Created /zk_test
发出另一个ls /命令的目录是什么样子
[zkshell: 11] ls /
[zookeeper, zk_test]
现在注意到这个zk_test目录已经被创建,
接下来我们还通过set命令来改变zk_test的数据,如下所示:
zkshell: 14] set /zk_test junk
cZxid = 5
ctime = Fri Jun 05 13:57:06 PDT 2009
mZxid = 6
mtime = Fri Jun 05 14:01:52 PDT 2009
pZxid = 5
cversion = 0
dataVersion = 1
aclVersion = 0
ephemeralOwner = 0
dataLength = 4
numChildren = 0
[zkshell: 15] get /zk_test
junk
cZxid = 5
ctime = Fri Jun 05 13:57:06 PDT 2009
mZxid = 6
mtime = Fri Jun 05 14:01:52 PDT 2009
pZxid = 5
cversion = 0
dataVersion = 1
aclVersion = 0
ephemeralOwner = 0
dataLength = 4
numChildren = 0
(我们可以在set命令执行之后来使用get来查正式数据已经改变) 最后让我们删除这个节点:
[zkshell: 16] delete /zk_test
[zkshell: 17] ls /
[zookeeper] [zkshell: 18]
ZooKeeper 有C语言和java两个版本 ,他们在功能上是等同的。C语言版本有2个不同点,单线程和多线程。这些差异仅仅在消息循环时候体现出来。更多细节,请查看Zookeeper编程指南中的的变成案例(简单的代码,却使用不同的APIS)。
cookie.setValue(ckv);
cookie.setMaxAge(2592000);
cookie.setPath(“/”);
resp.addCookie(cookie);
break;
原创文章,转载请注明: 转载自并发编程网 – ifeve.com本文链接地址: 《Apache Zookeeper 官方文档》-3 快速指南:使用zookeeper来协调分布式应用