只有一个 ZooKeeper 服务器的例子

本文档详细介绍了如何从创建配置文件开始,一步步启动ZooKeeper服务器,并连接到服务器。首先,在zookeeper-3.4.10/conf下复制并配置zoo.cfg文件,然后在新的命令行窗口中启动ZooKeeper服务器。最后,通过特定命令连接到ZooKeeper服务器,文中还简要提及了ZooKeeper中的核心概念——节点(znode)。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

-- Start

1. 创建配置文件

在 zookeeper-3.4.10/conf 目录下,有一个叫 zoo_sample.cfg 的文件,将这个文件复制一份改名为 zoo.cfg, 注意文件名只能是 zoo.cfg,原因是 ZooKeeper 的脚本默认读这个文件,如果你想使用其他文件,你就需要修改脚本zkEnv.cmd 的33行(set ZOOCFG=%ZOOCFGDIR%\zoo.cfg)。打开 zoo.cfg 文件,将 dataDir 属性配置成自己的目录。本人使用下面的目录,请确保你的目录是存在的。

dataDir=D:/0_Shangbo/App/ZooKeeper/zookeeper-3.4.10/data/server1

2.启动 ZooKeeper 服务器

新打开一个命令行窗口,运行下面的命令启动 ZooKeeper 服务器。

d:
cd D:\0_Shangbo\App\ZooKeeper\zookeeper-3.4.10\bin
zkServer.cmd

3. 连接 ZooKeeper 服务器

新打开一个命令行窗口,运行下面的命令可以连接到 ZooKeeper 服务器.


d:
cd D:\0_Shangbo\App\ZooKeeper\zookeeper-3.4.10\bin
zkCli.cmd -server 127.0.0.1:2181
连接到 ZooKeeper 服务器后,就好比你通过 SSH 工具连接到了 Linux 服务器一样,你可以执行一些命令来管理服务器,那么你可以执行哪些命令呢?试一试下面的命令吧。
ZooKeeper -server host:port cmd args
        stat path [watch]
        set path data [version]
        ls path [watch]
        delquota [-n|-b] path
        ls2 path [watch]
        setAcl path acl
        setquota -n|-b val path
        history
        redo cmdno
        printwatches on|off
        delete path [version]
        sync path
        listquota path
        rmr path
        get path [watch]
        create [-s] [-e] path data acl
        addauth scheme auth
        quit
        getAcl path
        close
        connect host:port

下面我们查看一下根节点下有哪些节点(znode)。

[zk: 127.0.0.1:2181(CONNECTED) 1] ls /
[zookeeper]

我们发现,当前根节点下没有任何节点,下面我们创建一个新节点并保存 zhang_san 到该节点中,然后再次查看根节点。

[zk: 127.0.0.1:2181(CONNECTED) 2] create /my_friend zhang_san
Created /my_friend
[zk: 127.0.0.1:2181(CONNECTED) 3] ls /
[zookeeper, my_friend]

创建新节点后,我们可以通过下面的命令来查看(get)或修改(set)它保存的数据。

[zk: 127.0.0.1:2181(CONNECTED) 4] set /my_friend li_si
cZxid = 0x2
ctime = Thu Sep 04 20:30:53 CST 2014
mZxid = 0x3
mtime = Thu Sep 04 20:31:27 CST 2014
pZxid = 0x2
cversion = 0
dataVersion = 1
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 5
numChildren = 0
[zk: 127.0.0.1:2181(CONNECTED) 5] get /my_friend
li_si
cZxid = 0x2
ctime = Thu Sep 04 20:30:53 CST 2014
mZxid = 0x3
mtime = Thu Sep 04 20:31:27 CST 2014
pZxid = 0x2
cversion = 0
dataVersion = 1
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 5
numChildren = 0

你可以自己尝试一下其他的命令,最后我们删除该节点并关闭连接。

[zk: 127.0.0.1:2181(CONNECTED) 6] delete /my_friend
[zk: 127.0.0.1:2181(CONNECTED) 7] ls /
[zookeeper]
[zk: 127.0.0.1:2181(CONNECTED) 8] close
2014-09-04 20:37:50,368 [myid:] - INFO  [main:ZooKeeper@684] - Session: 0x14840a3a9d40000 closed
[zk: 127.0.0.1:2181(CLOSED) 9] 2014-09-04 20:37:50,368 [myid:] - INFO  [main-EventThread:ClientCnxn$EventThread@512] - EventThread shut down

上面提到了一个新概念, 节点(znode),那么什么是节点(znode)呢?别着急,你很快会知道。

-- 更多参见:ZooKeeper 精萃
-- 声 明:转载请注明出处
-- Last Edited on 2017-07-26
-- Written by ShangBo on 2014-09-04
-- End
要创建一个Apache ZooKeeper的测试项目,以下是一些基本步骤: 1. 安装ZooKeeper:在你的本地机器上安装ZooKeeper,可以从官方网站下载二进制文件,或者使用包管理器进行安装。 2. 创建ZooKeeper测试项目:使用你喜欢的IDE(如Eclipse或IntelliJ IDEA)创建一个新的Java项目,并添加ZooKeeper的依赖项。你可以在Maven或Gradle中添加以下依赖项: ``` <dependency> <groupId>org.apache.zookeeper</groupId> <artifactId>zookeeper</artifactId> <version>3.6.2</version> </dependency> ``` 3. 编写测试代码:在项目中创建一个Java类,并编写测试代码。以下是一个简单的例子,用于连接到ZooKeeper服务器并创建一个ZNode: ``` import org.apache.zookeeper.*; public class ZooKeeperTest { private static final String CONNECT_STRING = "localhost:2181"; private static final int SESSION_TIMEOUT = 5000; public static void main(String[] args) throws Exception { ZooKeeper zooKeeper = new ZooKeeper(CONNECT_STRING, SESSION_TIMEOUT, null); String path = "/test"; byte[] data = "hello world".getBytes(); CreateMode createMode = CreateMode.PERSISTENT; zooKeeper.create(path, data, ZooDefs.Ids.OPEN_ACL_UNSAFE, createMode); zooKeeper.close(); } } ``` 4. 运行测试代码:在IDE中运行测试代码,确保ZooKeeper服务器正在运行,并且可以连接到它。如果一切正常,你应该能够在ZooKeeper中看到一个新的ZNode被创建了。 这只是一个简单的例子,你可以深入学习ZooKeeper的其他功能和API,并编写更复杂的测试代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值