文档章节

【从入门到放弃-ZooKeeper】ZooKeeper入门

阿里云官方博客
 阿里云官方博客
发布于 2019/09/09 11:09
字数 954
阅读 78
收藏 1

前言

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数据时,可以指定版本号,版本号与当前版本一致时才更新。这种乐观锁的更新方式,可以避免并发时数据被覆盖


原文链接
本文为云栖社区原创内容,未经允许不得转载。

© 著作权归作者所有

阿里云官方博客
粉丝 210
博文 2367
码字总数 5560474
作品 0
杭州
程序员
私信 提问
加载中

评论(0)

docker入门到实战(6)在docker中安装和使用kafka

下载镜像 这里使用了wurstmeister/kafka和wurstmeister/zookeeper这两个版本的镜像,在hub.docker.com中可以搜索到。 1、docker pull wurstmeister/zookeeper 2、docker pull wurstmeister/...

编程老司机
2018/05/14
0
0
zookeeper入门(1)在单机上实现ZooKeeper伪机群/伪集群部署

《zooker入门系列教程》: 1 - 如何在单机上实现ZooKeeper伪机群/伪集群部署 2 - 解读zookeeper的配置项 ----- 此文是为手头没有多余机器可以尝试而又需要尝试部署机群的情况而写的,是一个入...

晨曦之光
2012/04/24
1.6K
0
ZooKeeper分布式专题与Dubbo微服务入门

ZooKeeper分布式专题与Dubbo微服务入门 网盘地址:https://pan.baidu.com/s/1TN6BlftB2uvvyVR7IDmODQ 密码: e6zt 备用地址(腾讯微云):https://share.weiyun.com/5539X2S 密码:65b36i Zo...

人气王子333
2018/04/17
0
0
「从入门到放弃-ZooKeeper」ZooKeeper实战-分布式锁

前言 上文【从入门到放弃-ZooKeeper】ZooKeeper实战-分布式队列中,我们一起写了下如何通过ZooKeeper的持久性顺序节点实现一个分布式队列。 本文我们来一起写一个ZooKeeper的实现的分布式锁。...

阿里云官方博客
2019/09/23
9
0
【Kafka 1.x】快速入门

本博客文章如无特别说明,均为原创!转载请注明出处:Big data enthusiast(http://www.lubinsu.com/) 本文链接地址:【Kafka 1.x】快速入门(http://www.lubinsu.com/index.php/archives/475)...

snoopy93
2018/05/08
0
0

没有更多内容

加载失败,请刷新页面

加载更多

16、SpringBoot之AOP创建代理

1.1、简介 // 要使用SpringBoot的AOP功能,需要在pom中新增aop依赖<dependency> <groupid>org.springframework.boot</groupid> <artifactid>spring-boot-starter-aop</artifactid......

神锋
10分钟前
30
0
如何传递prepareForSegue:一个对象

我在地图rightCalloutAccessory有很多注释(带有rightCalloutAccessory按钮)。 该按钮将从此mapview到tableview 。 我想根据单击哪个标注按钮将不同的对象(包含数据)传递给tableview 。 ...

技术盛宴
19分钟前
35
0
REST API服务为验证失败返回的适当HTTP状态代码是什么?

每当我在基于Django / Piston的REST API应用程序中遇到验证失败时,我目前正在返回401 Unauthorized。 看过HTTP状态代码注册表后我不相信这是验证失败的合适代码,你们都推荐什么? 400错误请...

javail
35分钟前
76
0
《计算机程序的构造和解释》分享下载

书籍信息 书名:《计算机程序的构造和解释》 原作名:Structure and Interpretation of Computer Programs 作者: Harold Abelson / Gerald Jay Sussman / Julie Sussman 豆瓣评分:9.5分(22...

开始以后_
40分钟前
75
0
《Linux就该这么学》第六节课while循环语句,case测试语句,计划任务及用户文件的相关命令

《Linux就该这么学》 本书是由全国多名红帽架构师(RHCA)基于最新Linux系统共同编写的高质量Linux技术自学教程,极其适合用于Linux技术入门教程或讲课辅助教材,目前是国内最值得去读的Lin...

溪风之殇
49分钟前
60
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部