共计 1512 个字符,预计需要花费 4 分钟才能阅读完成。
前言
ZooKeeper 是一个分布式服务协调框架,可以用来维护分布式配置信息、服务注册中心、实现分布式锁等。在 Hbase、Hadoop、kafka 等项目中都有广泛的应用。随着分布式、微服务的普及,ZooKeeper 已经成为我们日常开发工作中无法绕过的一环,本文将从安装配置到最基础的使用入手,对其进行介绍。
安装部署
下载
在 http://mirror.bit.edu.cn/apache/zookeeper/stable/ 下载推荐的 stable 版本。可以直接下载编译好的 bin 文件。
目前最新的 stable 版本是 3.5.5
解压
将下载的文件解压至工作目录,我的工作目录是 /var/workspace/zookeeper
tar -xzvf apache-zookeeper-3.5.5-bin.tar.gz -C /var/workspace/zookeeper
配置
此时如果直接启动 zookeeper 是会失败的,提示找不到 zoo.cfg 文件。
需要我们把 conf 目录中提供的 zoo_sample.cfg 示例配置文件,复制为一份 zoo.cfg,zoo.cfg 是默认的启动配置文件
cp ../conf/zoo_sample.cfg ../conf/zoo.cfg
启动
默认启动,使用 config/zoo.cfg 配置文件在后台启动
前台启动,会将启动日志打印在终端。终端关闭后服务也关闭。
访问
使用 zcCli.sh -server host:port 访问 ZooKeeper 服务器。
不加 -server 参数时,默认使用 127.0.0.1:2181
使用
ZooKeeper 使用类似资源文件目录的方式来管理节点,每个节点可以存储数据。
ZooKeeper 有四种不同类型的节点:
- PERSISTENT:持久化节点,除非手动删除,否则会永久保存
- PERSISTENT_SEQUENTIAL:持久化顺序节点,除非手动删除,否则会永久保存。默认会在用户设置的节点名称后,顺序的增加十位的数字字符串。如 test_0000000001
- EPHEMERAL:临时节点,在 session 结束后,临时节点会被自动删除。
- EPHEMERAL_SEQUENTIAL:临时顺序节点,在 session 结束后,临时节点会被自动删除。默认会在用户设置的节点名称后,顺序的增加十位的数字字符串。如 test_0000000001
help
使用 zkCli.sh 连接到服务端后,可以使用 help 展示常见命令的使用方式。
ls
列出某个路径下的节点
create
可以使用 create {path} 创建节点。
使用 create -s {path} 可以创建有序节点,后面添加十位递增的数字后缀。
使用 create -e 创建临时节点,当断开连接后,临时节点会被删除。
set/get
ZooKeeper 的节点可以存储数据,使用 set 方法将数据存在节点中。
使用 get 方法,从节点中获取数据。
set -v {currentVersion} {path} {data}
节点的数据每次更新时,都会递增,如果要更新节点,请使用上面的命令修改,如果 currentVersion 不是最新版本时,则更新失败,类似乐观锁 CAS。
delete
可以通过 delete 删除节点。
总结
通过上面的学习,我们已经学会了 ZooKeeper 最基本的安装部署及使用方式。需要牢记:
- ZooKeeper 的节点是类似文件系统的管理方式
- Zookeeper 有四种节点类型,临时节点会在会话断开后自动删除,顺序节点后缀序号会自动递增
- set 数据时,可以指定版本号,版本号与当前版本一致时才更新。这种乐观锁的更新方式,可以避免并发时数据被覆盖
本文作者:aloof_
阅读原文
本文为云栖社区原创内容,未经允许不得转载。