Zookeeper学习笔记(二)---- Zookeeper基本使用

文章内容输出来源:拉勾教育Java高薪训练营。
本篇文章是 分布式集群架构场景方案 学习课程中的一部分笔记

Zookeeper基本使用

系统模型

  • ZooKeeper数据模型Znode

    Zookeeper中,数据信息被保存再一个个数据节点上,这些节点被称为znode。ZNode是Zookeeper中最小数据单位,在ZNode下面可以再挂ZNode,这样一层层下去形成了一个层次化命名空间ZNode树,我们称为Znode Tree 采用了类似文件系统的层级树状结构进行管理

    • ZNode类型

      持久性节点(Persistent)
      临时性节点(Ephemeral)
      顺序性节点(Sequential)
      在开发中创建节点的时候通过组合可以生成一下四种节点类型;持久节点,持久顺序节点,临时节点,临时顺序节点。不同类型的节点会有不同的生命周期

      • 持久节点:是Zookeeper中最常见的一种节点类型,节点创建后一直存在服务器,知道删除操作主动清除
      • 持久顺序节点:有顺序的持久节点,创建时,会在节点名后面加上一个数字后缀,来表示其顺序
      • 临时节点:就是会被自动清理掉的节点,他的生命周期和客户端会话绑再一起,客户端会话结束,节点会被删除掉,与持久节点不同的是,临时节点不能创建子节点
      • 临时顺序节点:有顺序的临时节点,在其创建时会在名字后面加数字后缀
  • 事务ID

    • Zookeeper中,事务是指能够改变Zookeeper服务器状态的操作,一般包括数据节点创建与删除,数据节点内容更新等操作。对于每一个事物请求,Zookeeper都会为其分配一个全局唯一的事务ID,用ZXID来表示,通常是一个64位的数组。每一个ZXID对应一次更新操作,从这些ZXID中可以间接的识别出Zookeeper处理这些更新操作请求的全局顺序。
  • ZNode状态信息

    • 内容包括两部分,节点数据内容和节点状态信息。

      cZxid 就是 Create ZXID,表示节点被创建时的事务ID。
      ctime 就是 Create Time,表示节点创建时间。
      mZxid 就是 Modified ZXID,表示节点最后⼀次被修改时的事务ID。
      mtime 就是 Modified Time,表示节点最后⼀次被修改的时间。
      pZxid 表示该节点的⼦节点列表最后⼀次被修改时的事务 ID。只有⼦节点列表变更才会更新 pZxid, ⼦节点内容变更不会更新。
      cversion 表示⼦节点的版本号。
      dataVersion 表示内容版本号。
      aclVersion 标识acl版本
      ephemeralOwner 表示创建该临时节点时的会话 sessionID,如果是持久性节点那么值为 0
      dataLength 表示数据⻓度。
      numChildren 表示直系⼦节点数。

  • Watch数据变更通知

    一个典型的发布/订阅模型系统,定义了一种一对多的订阅关系,能够让多台订阅者同时监听某一个主题对象,当这个主题对象自身状态变化时,会通知所有订阅者,是他们能够做出相应的处理。

    Zookeeper允许客户端向服务端注册一个Watcher监听,当服务端的一些指定事件触发了这个Watcher,那么就会指定客户端发送一个事件通知来实现分布式的通知功能

    • 该机制主要包括客户端线程,客户端WatcherManager,Zookeeper服务器三部分,具体的工作流程位:客户端在向Zookeeper服务器注册的同时,会将Watcher对象存储在客户端的WatcherManager当中。当Zookeeper服务器出发Watcher事件后,会向客户端发送通知,客户端线程从WatcherManager中取出对应的Watcher对象来执行回调逻辑。
  • ACL(Access Control List)权限控制

    Zookeeper内部存储了分布式运行时状态的元数据,这些元数据会直接影响Zookeeper进行构造的分布式系统的允许状态。因此使用ACL机制保证数据安全。
    通常使用"scheme🆔permission"来标识一个有效的ACL信息

    • 权限模式(Scheme)

      用来确定权限验证过程中使用的检验策略

      • IP:通过IP地址粒度来进行权限控制,如 ip:192.168.0.110,或者 ip:192.168.0.1/24
      • Digest:最常用的权限控制模式,“username:password”的形式的权限标识进行权限配置,配置后,Zk会先后对其进行SHA-1加密和BASE64编码
      • World:数据节点访问权限对所有用户开放,可以看作是特殊的Digest, “world:anyone”
      • Super:也可以看作特殊的Digest,在Super模式下,超级用户可以对任意Zookeeper上的数据节点进行任何操作
    • 授权对象(ID)

      指权限赋予的用户或者一个指定实体,例如IP地址或者解其等。

    • 权限(Permission)

      通过权限检查后,允许被执行的操作。

      • CREATE(C):数据节点的创建权限,允许授权对象在该数据节点下创建子节点
      • DELETE(D):删除权限,允许授权对象删除该数据节点的子节点
      • READ(R):读取权限,允许授权对象访问该节点数据内容或子节点列表等
      • WRITE(W):更新权限:允许授权对象对该数据节点进行更新操作
      • ADMIN(A):管理权限:允许授权对象对该节点进行ACL相关的设置操作

命令行操作

  • 创建节点

    create [-s][-e] path data acl
    其中,-s或-e分别指定节点特性,顺序或临时节点,若不指定,则创建持久节点;acl⽤来进⾏权限控制。

  • 读取节点

    ls path 其中,path表示的是指定数据节点的节点路径,ls命令只能查看指定节点下的第一级所有子节点
    get path 可以获取Zk指定节点的数据内容和属性信息

  • 更新节点

    set path data [version] 其中data表示要更新的数据内容,version表示数据版本。

  • 删除节点

    delete path [version] 若删除的节点存在子节点,那么无法删除该节点,必须先删除子节点,再删除父节点。

API使用

  • 项目依赖

  • 创建节点

    • 在这里插入图片描述
    • 在这里插入图片描述
    • 在这里插入图片描述
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值