zookeeper基本操作

【路径】

1:Zookeeper的数据结构

2:节点的分类

  • 持久性
  • 临时性

3:客户端命令(创建、查询、修改、删除)

4:Zookeeper的java的api介绍(创建、查询、修改、删除)

5:Zookeeper的watch机制

  • NodeCache
  • PathChildrenCache
  • TreeCache

【讲解】

3.1、zookeeper数据结构

​ ZooKeeper 的数据模型是层次模型。层次模型常见于文件系统。例如:我的电脑可以分为多个盘符(例如C、D、E等),每个盘符下可以创建多个目录,每个目录下面可以创建文件,也可以创建子目录,最终构成了一个树型结构。通过这种树型结构的目录,我们可以将文件分门别类的进行存放,方便我们后期查找。而且磁盘上的每个文件都有一个唯一的访问路径,例如:C:\Windows\itcast\hello.txt。在这里插入图片描述
层次模型和key-value 模型是两种主流的数据模型。ZooKeeper 使用文件系统模型主要基于以下两点考虑:

  1. 文件系统的树形结构便于表达数据之间的层次关系。

  2. 文件系统的树形结构便于为不同的应用分配独立的命名空间(namespace 路径url)。

​ ZooKeeper 的层次模型称作data tree。Datatree 的每个节点叫作znode(Zookeeper node)。不同于文件系统,每个节点都可以保存数据。每个节点都有一个版本(version)。版本从0 开始计数。

在这里插入图片描述
如图所示,data tree中有两个子树,用于应用1( /app1)和应用2(/app2)。

每个客户端进程pi 创建一个znode节点 p_i 在 /app1下, /app1/p_1就代表一个客户端在运行。

3.2、节点的分类【重点】

一:一个znode可以是持久性的,也可以是临时性的

  1. 持久性znode[PERSISTENT],这个znode一旦创建不会丢失,无论是zookeeper宕机,还是client宕机。

  2. 临时性的znode[EPHEMERAL],如果zookeeper宕机了,或者client在指定的timeout时间内没有连接server,都会被认为丢失。 -e

二:znode也可以是顺序性的,每一个顺序性的znode关联一个唯一的单调递增整数。这个单调递增整数是znode名字的后缀。

  1. 持久顺序性的znode(PERSISTENT_SEQUENTIAL):znode 处理具备持久性的znode的特点之外,znode的名称具备顺序性。 -s

  2. 临时顺序性的znode(EPHEMERAL_SEQUENTIAL):znode处理具备临时性的znode特点,znode的名称具备顺序性。-s

3.2、客户端命令
3.2.1、查询所有命令

help
在这里插入图片描述

3.2.2、查询跟路径下的节点
ls /zookeeper

查看zookeeper节点
在这里插入图片描述

3.2.3、创建普通永久节点
create /app1 "helloworld"

创建app1节点,值为helloworld

在这里插入图片描述

3.2.4、创建带序号永久节点
create -s /hello "helloworld"

在这里插入图片描述

3.2.5、创建普通临时节点
create -e /app3 'app3'

-e:表示普通临时节点
在这里插入图片描述
关闭客户端,再次打开查看 app3节点消失

3.2.6、创建带序号临时节点
create -e -s /app4 'app4'

-e:表示普通临时节点

-s:表示带序号节点
在这里插入图片描述
关闭客户端,再次打开查看 app4节点消失

3.2.7、查询节点数据
get /app1

在这里插入图片描述

# ­­­­­­­­­­­节点的状态信息,也称为stat结构体­­­­­­­­­­­­­­­­­­­
# 创建该znode的事务的zxid(ZooKeeper Transaction ID)
# 事务ID是ZooKeeper为每次更新操作/事务操作分配一个全局唯一的id,表示zxid,值越小,表示越先执行
cZxid = 0x4454 # 0x0表示十六进制数0
ctime = Thu Jan 01 08:00:00 CST 1970  # 创建时间
mZxid = 0x4454 						  # 最后一次更新的zxid
mtime = Thu Jan 01 08:00:00 CST 1970  # 最后一次更新的时间
pZxid = 0x4454 						  # 最后更新的子节点的zxid
cversion = 5 						  # 子节点的变化号,表示子节点被修改的次数
dataVersion = 0 					  # 表示当前节点的数据变化号,0表示当前节点从未被修改过
aclVersion = 0  					  # 访问控制列表的变化号 access control list
# 如果临时节点,表示当前节点的拥有者的sessionId
ephemeralOwner = 0x0				  # 如果不是临时节点,则值为0
dataLength = 13 					  # 数据长度
numChildren = 1 					  # 子节点的数量
3.2.8、修改节点数据
set /app1 'hello'

在这里插入图片描述

3.2.9、删除节点
delete /hello0000000006

在这里插入图片描述

3.2.10、递归删除节点
delete /hello

rmr /hello

在这里插入图片描述

3.2.11、查看节点状态
stat /zookeeper

在这里插入图片描述

3.4.12、日志的可视化
  • 这是日志的存储路径
  • 在这里插入图片描述

为了能正常查看日志,把查看日志需要的jar包放到统一路径下
在这里插入图片描述

  • 使用命令可以直接查看正常日志
java -classpath ".;*" org.apache.zookeeper.server.LogFormatter log.1

在这里插入图片描述
小结: 路径必须以/打头

ls 查看

help查看所有命令

create 路径 数据 -s 代表有序 -e 代临时

get 路径 查询

set 路径 新的数据

delete 路径 单一路径,没有子节点

rmr 路径 递归删除

stat 路径 查看节点状态 没有数据显示

日志 配置日志存储路径,依赖2个zookeeper-xxx.jar, sfl4-api.jar

​ java -classpath “.;*” org.apache.zookeeper.server.LogFormatter log.1

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值