Zookeeper(持续更新)

VIP-01 Zookeeper特性与节点数据类型详解


文章目录

  • VIP-01 Zookeeper特性与节点数据类型详解
  • 正文
    • 1. 什么是Zookeeper?
    • 2. Zookeeper 核心概念
      • 2.1、 文件系统数据结构
      • 2.2、监听通知机制
      • 2.3、Zookeeper 经典的应用场景
      • 3.2. 使用命令行操作zookeeper


正文

  1. 什么是Zookeeper
  2. Zookeeper核心概念
  3. Zookeeper实操
  4. Zookeeper ACLs权限控制
  5. ZooKeeper 内存数据和持久化
    在了解Zookeeper之前,需要对分布式相关知识有一定了解,什么是分布式系统呢?通常情况
    下,单个物理节点很容易达到性能,计算或者容量的瓶颈,所以这个时候就需要多个物理节点来
    共同完成某项任务,一个分布式系统的本质是分布在不同网络或计算机上的程序组件,彼此通过
    信息传递来协同工作的系统,而Zookeeper正是一个分布式应用协调框架,在分布式系统架构中
    有广泛的应用场景。

1. 什么是Zookeeper?

官方文档上这么解释zookeeper,它是一个分布式协调框架,是Apache Hadoop 的一个子项
目,它主要是用来解决分布式应用中经常遇到的一些数据管理问题,如:统一命名服务、状态同
步服务、集群管理、分布式应用配置项的管理等。

在这里插入图片描述

2. Zookeeper 核心概念

上面的解释有点抽象,同学们暂时可以理解为 Zookeeper 是一个用于存储少量数据的基于内存
的数据库,主要有如下两个核心的概念:文件系统数据结构+监听通知机制。

2.1、 文件系统数据结构

Zookeeper维护一个类似文件系统的数据结构:
在这里插入图片描述
每个子目录项都被称作为 znode(目录节点),和文件系统类似,我们能够自由的增加、删除
znode,在一个znode下增加、删除子znode。
有四种类型的znode:
1、PERSISTENT­持久化目录节点
客户端与zookeeper断开连接后,该节点依旧存在,只要不手动删除该节点,他将永远存在
2、 PERSISTENT_SEQUENTIAL­持久化顺序编号目录节点
客户端与zookeeper断开连接后,该节点依旧存在,只是Zookeeper给该节点名称进行顺序编号
3、EPHEMERAL­临时目录节点
客户端与zookeeper断开连接后,该节点被删除
4、EPHEMERAL_SEQUENTIAL­临时顺序编号目录节点
客户端与zookeeper断开连接后,该节点被删除,只是Zookeeper给该节点名称进行顺序编号
5. Container 节点(3.5.3 版本新增,如果Container节点下面没有子节点,则Container节点
在未来会被Zookeeper自动清除,定时任务默认60s 检查一次)
6. TTL 节点( 默认禁用,只能通过系统配置 zookeeper.extendedTypesEnabled=true 开启,不稳
定)
在这里插入图片描述

2.2、监听通知机制

客户端注册监听它关心的任意节点,或者目录节点及递归子目录节点

  1. 如果注册的是对某个节点的监听,则当这个节点被删除,或者被修改时,对应的客户端将被通
  2. 如果注册的是对某个目录的监听,则当这个目录有子节点被创建,或者有子节点被删除,对应
    的客户端将被通知
  3. 如果注册的是对某个目录的递归子节点进行监听,则当这个目录下面的任意子节点有目录结构
    的变化(有子节点被创建,或被删除)或者根节点有数据变化时,对应的客户端将被通知。
    注意:所有的通知都是一次性的,及无论是对节点还是对目录进行的监听,一旦触发,对应的监
    听即被移除。递归子节点,监听是对所有子节点的,所以,每个子节点下面的事件同样只会被触
    发一次。

2.3、Zookeeper 经典的应用场景

  1. 分布式配置中心
  2. 分布式注册中心
  3. 分布式锁
  4. 分布式队列
  5. 集群选举
  6. 分布式屏障
  7. 发布/订阅
  8. Zookeeper 实战
    3.1. zookeeper安装
    Step1:配置JAVA环境,检验环境:
1 java ‐version

Step2: 下载解压 zookeeper

1 wget https://mirror.bit.edu.cn/apache/zookeeper/zookeeper‐3.5.8/apache‐zookeepe
r‐3.5.8‐bin.tar.gz
2 tar ‐zxvf apache‐zookeeper‐3.5.8‐bin.tar.gz
3 cd apache‐zookeeper‐3.5.8‐bin

Step3: 重命名配置文件 zoo_sample.cfg

1 cp zoo_sample.cfg zoo.cfg

Step4: 启动zookeeper

1 # 可以通过 bin/zkServer.sh 来查看都支持哪些参数
2 bin/zkServer.sh start conf/zoo.cfg

Step5: 检测是否启动成功

1 echo stat | nc 192.168.109.200 // 前提是配置文件中中讲 stat 四字命令设置了了白名单
2 如:
3 4lw.commands.whitelist=stat

Step6: 连接服务器

1 bin/zkCli.sh ‐server ip:port

3.2. 使用命令行操作zookeeper

输入命令 help 查看zookeeper所支持的所有命令:

1 [zk: localhost:2181(CONNECTED) 80] help
2 ZooKeeper ‐server host:port cmd args
3 addauth scheme auth
4 close
5 config [‐c] [‐w] [‐s]
6 connect host:port
7 create [‐s] [‐e] [‐c] [‐t ttl] path [data] [acl]
8 delete [‐v version] path
9 deleteall path
10 delquota [‐n|‐b] path
11 get [‐s] [‐w] path
12 getAcl [‐s] path
13 history
14 listquota path
15 ls [‐s] [‐w] [R] path
16 ls2 path [watch]
17 printwatches on|off
18 quit
19 reconfig [‐s] [‐v version] [[‐file path] | [‐members serverID=host:port1:port
2;port3[,...]*]] | [‐add serverId=host:port1:port2;port3[,...]]* [‐remove serverI
d[,...]*]
20 redo cmdno
21 removewatches path [‐c|‐d|‐a] [‐l]
22 rmr path
23 set [‐s] [‐v version] path data
24 setAcl [‐s] [‐v version] [R] path acl
25 setquota ‐n|‐b val path
26 stat [‐w] path
27 sync path
  1. 创建zookeeper 节点命令
1 create [‐s] [‐e] [‐c] [‐t ttl] path [data] [acl]
2

中括号为可选项,没有则默认创建持久化节点
-s: 顺序节点
-e: 临时节点
-c: 容器节点
-t: 可以给节点添加过期时间,默认禁用,需要通过系统参数启用
(-Dzookeeper.extendedTypesEnabled=true, znode.container.checkIntervalMs : (Java system
property only) New in 3.5.1: The time interval in milliseconds for each check of candidate
container and ttl nodes. Default is “60000”.)
创建节点:

1 create /test‐node some‐data

如上,没有加任何可选参数,创建的就是持久化节点
在这里插入图片描述
查看节点:

1 get /test‐node

在这里插入图片描述
修改节点数据:

1 set /test‐node some‐data‐changed

在这里插入图片描述
查看节点状态信息:

1 stat /test‐node

在这里插入图片描述
Stat
cZxid:创建znode的事务ID(Zxid的值)。
mZxid:最后修改znode的事务ID。
pZxid:最后添加或删除子节点的事务ID(子节点列表发生变化才会发生改变)。
ctime:znode创建时间。
mtime:znode最近修改时间。
dataVersion:znode的当前数据版本。
cversion:znode的子节点结果集版本(一个节点的子节点增加、删除都会影响这个
版本)。
aclVersion:表示对此znode的acl版本。
ephemeralOwner:znode是临时znode时,表示znode所有者的 session ID。 如果
znode不是临时znode,则该字段设置为零。
dataLength:znode数据字段的长度。
numChildren:znode的子znode的数量。
查看节点状态信息同时查看数据
在这里插入图片描述
根据状态数据中的版本号有并发修改数据实现乐观锁的功能
比如: 客户端首先获取版本信息, get -s /node-test
在这里插入图片描述
/test-node 当前的数据版本是 1 , 这时客户端 用 set 命令修改数据的时候可以把版本号带上
在这里插入图片描述
如果在执行上面 set命令前, 有人修改了数据,zookeeper 会递增版本号, 这个时候,如果再用
以前的版本号去修改,将会导致修改失败,报如下错误
在这里插入图片描述
创建子节点, 这里要注意,zookeeper是以节点组织数据的,没有相对路径这么一说,所以,所
有的节点一定是以 / 开头

1 create /test‐node/test‐sub‐node

在这里插入图片描述

查看子节点信息,比如根节点下面的所有子节点, 加一个大写 R 可以查看递归子节点列表

1 ls /

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
明天说Zookeeper 的 ACL 权限控制!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/598919.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

初学编程,到底选Java还是C++?

初学编程,到底选Java还是C? 在开始前我有一些资料,是我根据网友给的问题精心整理了一份「C的资料从专业入门到高级教程」, 点个关注在评论区回复“888”之后私信回复“888”,全部无偿共享给大家!!&#x…

LeGO-LOAM 安装以及运行

一、源码地址: GitHub - RobustFieldAutonomyLab/LeGO-LOAM: LeGO-LOAM: Lightweight and Ground-Optimized Lidar Odometry and Mapping on Variable TerrainLeGO-LOAM: Lightweight and Ground-Optimized Lidar Odometry and Mapping on Variable Terrain - GitH…

异步任务判断执行和重复使用实现类

主要是展示一下如何在书写异步任务判断的时候,如何根据返回值类型进行重复使用相同接口里面的不同实现类的方法 /*** 父类接口* **/ public interface Exceutor {String getTaskType();void excetuor(String s); }/*** 异步处理任务的任务类型** author yangziqian…

arcpy点要素生成经纬度字段脚本

说明 本脚本是用来简化操作的,正常情况下要生成经纬度字段,需要添加字段→填写字段名→写字段类型→字段计算器→计算几何。。。 而且经纬度都需要,要循环两遍。 本脚本就是为了简化以上操作的,安装后,打开脚本直接输…

从《数据库索引设计与优化》看mysql索引设计

很久之前写的一篇文章,主要是结合mysql45讲和《数据库索引设计与优化》讨论索引设计的,拿出来分享下。 选用什么引擎 对于INSERT_SELECT型数据库,如果没有事务的要求,更倾向于选择MyISAM。 因为InnoDB会维护更多的数据&#xff…

一个古老的终端显示控制命令-tput命令|帮你解决中英文混合时终端列对齐输出问题

终端显示控制对于写一个 终端脚本 是非常有用的,在没有图形界面时Unix和类Unix系统用户都是在Terminal控制终端下工作的。虽然Linux操作系统的图形界面出现淡化了终端显示控制,但终端控制功能依旧是每个命令行用户不可或缺的一部分。只是我们不知道在使用…

【LeetCode:129. 求根节点到叶节点数字之和 | 二叉树 + 递归】

🚀 算法题 🚀 🌲 算法刷题专栏 | 面试必备算法 | 面试高频算法 🍀 🌲 越难的东西,越要努力坚持,因为它具有很高的价值,算法就是这样✨ 🌲 作者简介:硕风和炜,…

记录汇川:水塔指令解释-ST

可以通过帮助查看指令手册 PLC的IO地址映射-两种方法 第一种: 新建一个全局变量表,按照如图所示建立IO地址 第二种: 直接如图所示位置定义名字 注意:IW和QB这两个前面一个有蓝色M一个没有。 蓝色的M表示模块发生变化的时候地址不会…

【S32K 进阶之旅】 NXP S32K3 以太网 RMII 接口调试(1)

前言 大联大世平集团推出了一款基于 NXP 车规级 MCU S32K344 的开发板——花名“Cavalry”,它使用 BGA257 封装的 32 位 ArmCortex-M7 S32K344 作为主控芯片,在69.6*130mm 的小体积开发板上搭载了 SBC 电源管理芯片、CAN 收发器、LIN 收发器、FLASH 存储…

低噪声,高增益的音频信号处理电路芯片选型分析

随着智能手机、汽车音频、AI智能音箱,智能家居、家庭影院、平板电脑、笔记本电脑等智能设备的普及;数字音频功放芯片的应用也越来越广泛;同时对音频信号处理的芯片的性能要求越来越高;以下几款就是常用热门音频信号处理电路芯片分…

NVM NodeJs版本管理 通关宝典

NVM NodeJs版本管理 通关宝典🏹 文章目录 NVM NodeJs版本管理 通关宝典🏹一、NVM是什么二、开始使用NVM三、NVM 命令速查四、手动安装特定Node版本(Windows)🙄4.1 NVM for windows 运行机制4.2 手动安装流程 五、切换 NVM 下载镜像源六、常见…

21. Mysql 事件或定时任务,解放双手,轻松实现自动化

文章目录 概念常见操作事件调度器操作查看事件创建事件删除事件启动与关闭事件 精选示例构造实时数据定时统计数据 总结参考资料 概念 Mysql 事件是一种在特定时间点自动执行的数据库操作,也可以称呼为定时任务,它可以自动执行更新数据、插入数据、删除…

x-cmd pkg | doggo - 现代化的 DNS 客户端

目录 简介首次用户快速实验指南功能特点类似工具与竞品进一步探索 简介 doggo 是一个由 Karan Sharma 于 2020 年使用 Go 语言开发的 DNS 客户端。它类似于 dig 命令,但旨在以现代化、简洁和可读的格式输出 DNS 查询结果。 首次用户快速实验指南 使用 x doggo 即可…

1.4 day4 IO进程线程

使用两个子进程进行文件拷贝&#xff0c;父进程进行资源回收 #include <myhead.h> int main(int argc, const char *argv[]) {//创建一个文件描述符并以只读的方式打开int fd-1;if((fdopen("./test.bmp",O_RDONLY))-1){perror("open error");return…

IDAPython详细版(二)

六&#xff1a;操作数 可以使用idc.get_openrand_typed(ea,n)得到操作数的类型。ea是地址&#xff0c;n是索引 这里有8种不同类型的操作数类 0_void 如果一个指令木有任何操作数它将返回0 0_reg 如果一个操作数是一个普通的寄存器将返回此类型。这个值在内部表示为1. o_mem …

java: 写入数据到HBase

一、添加依赖 <dependency><groupId>org.apache.hadoop</groupId><artifactId>hadoop-client</artifactId><version>2.6.0</version></dependency><dependency><groupId>org.apache.hbase</groupId><art…

Prometheus-Alertmanage钉钉实现告警

获取钉钉的webhook地址 1、注册企业钉钉 a、注册企业钉钉 浏览器打开钉钉注册页面 填入手机号码&#xff0c;填入获取到的验证码&#xff0c;点注册 填入企业资料并注册 注册成功后&#xff0c;扫描二维码下载钉钉&#xff0c;如下图&#xff1a; b、添加机器人 管理后台 因…

Modbus RTU Learn

一、传输方式 采用主从应答方式进行 帧格式 功能码对应寄存器 演示01功能码 返回数据 0F 转换成二进制 02功能码 0F 转换成二进制 03功能码 读两个寄存器 04功能码 返回数据&#xff0c;读两个寄存器 05功能码 06功能码 10功能码 响应报文

在centos上安装WordPress 及创建配置文件无反应的解决方案

一、安装Apache服务 1.直接在命令行中输入以下命令即可,顺便安装编译组件&#xff1a; yum install -y httpd yum install -y httpd-devel2.启动Apache服务和设置Apache自启&#xff1a; 1 systemctl start httpd 2 systemctl enable httpd 3.添加一个测试页面&#xff0c;…

windows安装kafka以及kafka管理工具推荐

windows安装 1.下载地址 下载地址 下载最新版本的.tgz文件解压 2.修改配置 修改config目录下的zookeeper.properties中的dataDir属性 server.properties文件中的log.dir属性 3.启动zookeeper 进入到bin\windows\下的用cmd输入zookeeper-server-start.bat ..\..\config\zo…