当前位置:   article > 正文

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

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 ,永久的
  1. # create 节点名称 节点对应value值
  2. # 参数含义
  3. # -s 生成序号
  4. # -e 临时存储
  5. 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

  1. # get 节点名称
  2. get /app1

2.查看节点状态 stat

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

修改和删除

修改节点数据 set

  1. # 修改节点
  2. set /app1 'app1Node'

删除一个节点 delete

  1. # 删除节点
  2. delete /hello0000000006

删除多层多个节点 deleteall

注意 : 低版本中是么有这个命令的
  1. # 删除多层多个节点
  2. 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 工厂,导入依赖坐标
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小丑西瓜9/article/detail/634917
推荐阅读
相关标签
  

闽ICP备14008679号