Zookeeper入门学习--02基本操作(还没写完,待补充)

Zookeeper数据存储模型

Zookeeper 的数据模型是层次模型【树 tree 结构】。层次模型常见于文件系统。
例如:我的电脑可以分为多个盘符(例如 C D、E等),每个盘符下可以创建多个目录,每个目录下面可以创建文件,也可以创建子目录,最终构成了一个树型结构。通过这种树型结构的目录,我们可以将文件分门别类的进行存放,方便我们后期查找。而且磁盘上的每个文件都有一个唯一的访问路径,例如: C:\Windows\itcast\hello.txt
层次模型和 key-value 模型是两种主流的数据模型。 Zookeeper 使用文件系统模型主要基于以下两点考虑:
    1. 文件系统的树形结构,便于表达数据之间的层次关系。
    2. 文件系统的树形结构,便于为不同的应用分配独立的命名空间( namespace )。
Zookeeper 的层次模型称作 Data Tree DataTree 的每个节点叫作 znode。不同于文件系统,每个节点 都可以保存数据。每个节点都有一个版本 (version) 。版本从 0 开始计数。

如图所示, Data Tree 中有两个子树,用于应用 1( /app1) 和应用 2 /app2)。 每个客户端进程创建一个 znode 节点 p_i /app1 下, /app1/p_1 就代表一个客户端在运行。

Zk节点分类

一个 znode 可以是持久性的,也可以是临时性的
1. 持久性 znode[PERSISTENT] ,保存到硬盘了。
  • 这个znode一旦创建不会丢失,无论是Zookeeper服务宕机,还是client宕机。
2. 临时性的 znode[EPHEMERAL] ,在内存中,没有保存到硬盘。 如果 Zookeeper 服务宕机了,或者 client 在指定的 timeout 时间内没有连接 server,都会被认为丢失。
  • znode也可以是顺序性的,带排序号的,每一个顺序性的znode关联一个唯一的递增整数。这个递增整数是znode名字的后缀。
3. 持久顺序性的 znode(PERSISTENT_SEQUENTIAL) : 持久性 + 顺序性
4. 临时顺序性的 znode(EPHEMERAL_SEQUENTIAL) : 临时性 + 顺序性

客户端命令操作Zookeeper

1、查询所有命令 help (记住一个命令,其他全都有了)

2ls查询根路径下的节点 ls

3、创建节点

1. 创建普通节点 app1 ,永久的
# create 节点名称 节点对应value值
# 参数含义 
# -s 生成序号 
# -e 临时存储 
create /app1 'helloworld'

2. 创建普通节点 app2
译文 : sequential 顺序的 ; 序列的
create -s /app2 'app2Node'

3. 创建普通临时节点 app3 create -e
译文 : ephemeral 短暂的 ; 瞬息的
create -e /app3 'app3'

关闭客户端,再次打开查看 app3 节点消失
注意 :
  • 再次打开客户端,并不会立即消失。需要等待10秒左右
  • 如果想要立即消失,退出客户端采用quit命令
4. 创建带序号临时节点 app4 create -e -s
create -e -s /app4 'app4'

关闭客户端,再次打开查看 app4 节点消失

查看节点

1.查询节点数据 get

# get 节点名称
 get /app1

2.查看节点状态 stat

# stat 节点名称 
stat /app1
# -------------------------节点的状态信息,也称为stat结构体---------------------- ------------ 

cZxid = 0x17f                           # 该数据节点被创建时的事务id,其中zxid表示的是zookeeper的事务ID,由64位数字组成,分为高32位和低32位 
ctime = Sat Dec 21 19:47:36 CST 2019    # 该数据节点创建时间
mZxid = 0x17f                           # 该数据节点被修改时最新的事物id 
mtime = Sat Dec 21 19:47:36 CST 2019    # 该数据节点最后更新时间 
pZxid = 0x183                           # 当前节点的父级节点事务ID 
cversion = 4                            # znode子节点变化号,znode子节点修改次数 
dataVersion = 0                         # znode数据变化号 
aclVersion = 0                          # 访问控制列表的变化号 access control list 
ephemeralOwner = 0x0                    # 如果临时节点,表示当前节点的拥有者的 sessionI。如果不是临时节点,则值为0 
dataLength = 6                          # 数据长度 
numChildren = 4                         # 子节点数据

修改和删除

修改节点数据 set

# 修改节点 
set /app1 'app1Node'

删除一个节点 delete

# 删除节点 
delete /hello0000000006

删除多层多个节点 deleteall

注意 : 低版本中是么有这个命令的
# 删除多层多个节点 
deleteall /app3 12

Java代码操作Zookeeper【重点】

ZooKeeper 常用 Java 客户端介绍 :
  • 原生Java API(代码量大,使用麻烦,不推荐使用)
  • Zookeeper 原生Java API位于org.apache.Zookeeper包中
  • ZkClient(杂牌,不推荐使用)
  • Github上一个开源的Zookeeper客户端,由datameer的工程师Stefan GroschupfPeterVoss一起开发。 zkclient-x.x.Jar也是在源生 api 基础之上进行扩展的开源 Java 客户端。
Apache Curator (名牌,推荐使用)
Apache Curator Apache Zookeeper Java 客户端库。
Curator. 项目的目标是简化 Zookeeper 客户端的使用。
Apache Curator 最初是 Netfix 研发的 , 后来捐献了 Apache 基金会 , 目前是 Apache 的顶级项目
1 、案例环境搭建 - 创建 Maven 工厂,导入依赖坐标
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值