ZK(3)——ZooKeeper基本特性与机遇linux的ZK客户端命令行学习

一、 ZK常用命令行操作

  • 通过 ./zkCli.sh 打开zk的客户端进行命令行后台

  • ls 与 ls2 命令

    • ls 指某一个路径下有哪些内容
    • ls2 是 ls + stat结合的命令
  • get 与 stat 命令

在这里插入图片描述

cZxid: 创建之后zk为该结点分配的id
ctime:这个节点创建的时候的时间
mZxid:修改后结点的id
mtime:修改的时间
pZxid:子节点的id
dataVersion:当前节点数据的版本号,如果当前节点被修改了,那么版本号会+1
aclVersion:将当前节点的权限修改了,那个这个值就会 + 1

二、session的基本原理

  • 客户端与服务端之间的连接存在会话

  • 每个回话都会设置一个超时时间(心跳结束,session就过期了)

  • Session 过期,临时结点znode会被抛弃

  • 心跳机制:客户端向服务端的ping包请求

1. create 命令——创建持久结点

在这里插入图片描述

2. create 命令——创建临时结点

如果想要创建一个临时znode结点,那么命令行应该为:

在这里插入图片描述

在这里插入图片描述

如果get之后的 ephemeralOwner的值为ox后面有很多数字,那么说明该结点是临时结点

3. create 命令——创建一个顺序节点

在这里插入图片描述

三、setdelete 命令的使用

1. set

在这里插入图片描述

2. delete

在这里插入图片描述

四、 zk特性——watcher机制

  • 针对每一个节点的操作,都会有一个监督者 (watcher)。watcher是一个事件。
  • 当监控的某个对象znode发生了变化,则触发watcher
  • zk中的watcher是一次性的,触发后立即销毁
  • 父节点,子节点 增删改都能触发器 watcher
  • 针对不同类型的操作,触发的watcher事件也不同:
    • 子节点创建事件
    • 子节点删除事件
    • 子节点数据变化事件
1. watcher 父节点
  • watcher事件类型
    • 创建父节点触发:NodeCreated
    • 修改父节点数据触发:NodeDataChanged
    • 删除父节点触发:NodeDeleted

在这里插入图片描述

当结点的数据发生变化事件:触发的类型type :NodeDataChanged

在这里插入图片描述

当结点被删除的时候,触发的类型type:NodeDeleted。同时注意,如果当前节点下面有子节点,不能直接使用delete将父节点删除

2. Watcher子节点

在这里插入图片描述

先给父节点创建一个watch时间,然后在父节点下面增加一个子节点abc,这个时候会提醒一个事件:NodeChildrenChanged

在这里插入图片描述

在这里不管是删除子节点还是创建子节点,触发的watcher类型都是:NodeChildrenChanged

3. watcher 使用场景
  • 统一资源配置

五、ACL权限

  • 针对结点可以设置相关读写等权限,目的为了保证数据安全性
  • 权限permissions可以指定不同的权限范围以及角色
5.1 ACL命令行
  • getAcl:获取某个结点的acl权限信息
  • setAcl:设置某个结点的acl权限信息
  • addauth:输入认证授权信息,注册时输入明文密码(登录)但是在ZK的系统里,密码是以加密的形式存在的

我们创建一个结点/imooc/abc 那么zk会给他一个默认的权限他的默认权限是:

在这里插入图片描述

5.2 ACL的构成

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

5.3 Acl命令行world讲解

当我们创建一个结点/imooc/abc 那么zk会给他一个默认的权限他的默认权限是:

在这里插入图片描述

在这里插入图片描述
给当前节点设置Acl权限, crwa指的是当前节点拥有的权限,包括:创建、读、写和auth权限,没有删除权限。

在这里插入图片描述

因为我们没有删除权限,所以在删除delete的时候,会报错误是:Authentication is not valid

5.4 Acl命令行auth与digest讲解

在这里插入图片描述

在这里插入图片描述

因为没有登录和注册,所以报错了。因此需要先注册一下,再添加Acl权限

在这里插入图片描述

在这里插入图片描述

5.5 acl命令行ip讲解

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

这种模式在讲解java客户端的时候再具体讲解

5.6 acl之super超级管理员

在这里插入图片描述

在这里插入图片描述

设置超级管理员需要在zk的bin文件下的./zkServer.sh 中设置上图中的信息。即:

"-Dzookeeper.DigestAuthenticationProvider.superDigest=username:OGsE6D6JzQHHMHkI27maIeu0Rc0="

设置完后,需要重启zk服务器。

然后再访问之前没有权限访问的结点,但是在访问之前需要先登录超级管理员。

当没有登录超级管理员的时候,访问/names/ip结点的时候会出现如下问题:

在这里插入图片描述

当登录了超级管理员之后,可以访问/names/ip结点

在这里插入图片描述

六、 ACL的常用使用场景

  • 开发 / 测试环境分离,开发者无权操作测试库结点,只能看。一般运维会有一个超级管理员权限,即super
  • 生产环境上控制指定ip的服务可以访问相关结点,防止混乱
    • 但是有的时候有一些机子的ip是动态ip,就需要经常修改ip,这是一个缺点。

七、ZK四字命令 Four Letter Words

  • zk可以通过它自身提供的简写命令来和服务器进行交互

  • 需要使用到nc命令,安装:yum install nc

  • echo [commond] | nc [ip] [port]

  • [stat]

    • 查看zk的状态信息,以及是否mode
  • [ruok]

    • 查看当前zkserver是否启动,返回 imok
  • [dump]

    • 列出未经处理的会话和临时结点

在这里插入图片描述

  • [conf]
    • 查看服务器配置

在这里插入图片描述

  • [cons]
    • 展示连接到服务器的客户端信息

在这里插入图片描述

  • [envi]
    • 环境变量

在这里插入图片描述

  • [mntr]
    • 监控zk健康信息

在这里插入图片描述

  • [wchs]

    • 展示watch的信息
  • [wchc] 与 [wchp]

    • sessionwatchpathwatch 信息

在这里插入图片描述

默认的是zk中没有启用wchc的。如果想使用这两个命令就需要进行配置。

配置的文件位置在 /conf/zoo.cfg,在这个文件的最后添加:

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值