【从入门到放弃-ZooKeeper】ZooKeeper入门
发布日期:2021-05-02 13:03:48 浏览次数:25 分类:技术文章

本文共 1519 字,大约阅读时间需要 5 分钟。

前言

ZooKeeper是一个分布式服务协调框架,可以用来维护分布式配置信息、服务注册中心、实现分布式锁等。在Hbase、Hadoop、kafka等项目中都有广泛的应用。随着分布式、微服务的普及,ZooKeeper已经成为我们日常开发工作中无法绕过的一环,本文将从安装配置到最基础的使用入手,对其进行介绍。

安装部署

下载

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

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

转载地址:https://blog.csdn.net/yunqiinsight/article/details/100655451 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:不做会死!互联网时代的企业必定都要实现中台
下一篇:阿里巴巴资深技术专家雷卷:值得开发者关注的 Java 8 后时代的语言特性

发表评论

最新留言

逛到本站,mark一下
[***.202.152.39]2024年03月24日 01时44分58秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章

C++_类和对象_对象特性_构造函数的分类以及调用---C++语言工作笔记041 2019-04-26
C++_类和对象_对象特性_拷贝构造函数调用时机---C++语言工作笔记042 2019-04-26
C++_类和对象_对象特性_构造函数调用规则---C++语言工作笔记043 2019-04-26
C++_类和对象_对象特性_深拷贝与浅拷贝---C++语言工作笔记044 2019-04-26
AndroidStudio_java.util.ConcurrentModificationException---Android原生开发工作笔记237 2019-04-26
AndroidStudio_android中实现对properties文件的读写操作_不把properties文件放在assets文件夹中_支持读写---Android原生开发工作笔记238 2019-04-26
弹框没反应使用Looper解决_the caller should invoke Looper.prepare() and Looper.loop()---Android原生开发工作笔记239 2019-04-26
Command line is too long. Shorten command line for Application---微服务升级_SpringCloud Alibaba工作笔记0067 2019-04-26
AndroidStudio_android实现双击_3击_监听实现---Android原生开发工作笔记240 2019-04-26
C++_类和对象_对象特性_初始化列表---C++语言工作笔记045 2019-04-26
C++_类和对象_对象特性_静态成员函数---C++语言工作笔记047 2019-04-26
AndroidStudio安卓原生开发_SwipeRefreshLayout_下拉刷新控件---Android原生开发工作笔记119 2019-04-26
AndroidStudio安卓原生开发_UI高级_DrawerLayout_侧滑菜单控件---Android原生开发工作笔记120 2019-04-26
AndroidStudio安卓原生开发_UI高级_Shape的使用_虚线_直线_矩形_渐变_径向渐变_线性渐变_扫描渐变---Android原生开发工作笔记122 2019-04-26
AndroidStudio安卓原生开发_UI高级_StateListDrawable状态选择器_按钮按下和抬起显示不同颜色---Android原生开发工作笔记124 2019-04-26
kivy制作安卓APP--简单音乐播放器 2019-04-26
十年(程序员改编) 2019-04-26
c++排序算法个人总结 2019-04-26
看完你就知道的乐观锁和悲观锁 2019-04-26
Docker入门 2019-04-26