当前位置:   article > 正文

zookeeper知识点(一)_如何进入zk查看节点

如何进入zk查看节点

ZK是什么主要用来做什么

       它主要是用来解决分布式应用中经常遇到的一些数据管理问题,如:统一命名服务、状态同步服务、集群管理、分布式应用配置项的管理等。

linux下安装部署zk(先把zk装起来,之后的功能啥的都能试一试,先单机)

  1. 依赖JDK环境
  1. 安装包下载地址:Apache ZooKeeper
  1. 上传安装包到linux指定位置并解压
  1. 修改配置文件

-conf 文件下  mv zoo_sample.cfg zoo.cfg

-创建数据文件夹,修改配置文件数据文件存储位置

-mkdir zkData

 

  1. 启动zk

-bin文件下  ./zkServer.sh start

-验证zk当前状态  jps 、ps -ef|grep zookeeper、netstat -ntlp|grep 2181

  1. 启动客户端

-bin文件下 ./zkCli.sh

-退出客户端 quit

  1. 关闭zk

-bin文件下  ./zkServer.sh stop         或者直接kill 进程

提供了什么功能

       zooKeeper=文件系统+通知机制。

zk文件系统

zk的命名空间就是zk的应用文件系统和linux文件系统很像,也是树状,这样可以确定每个路径都是唯一的,同时对于命名空间的操作都是绝对路径的操作。与linux文件系统不同的是,linux文件系统有目录和文件的区别,而zk统一的叫znode,一个znode节点可以包含znode同时也可以包含数据(znode只适合存储比较小的数据,不能超过1M,最好小于1K)。

文件系统特点总结

从“/”开始,只能有绝对路径;只有“znode”概念没有文件和目录概念,znode既有文件功能(存数)又有目录功能。

四种znode节点类型

节点有两个维度,一个是永久的还是临时的,另一个是否有序。组合成的四种类型如下:

1:PERSISTENT                                //  持久化节点 ,  节点创建后会被持久化,只有主动调用delete方法的时候才可以删除节点。

2:PERSISTENT_SEQUENTIAL       //  持久化排序节点, 排序节点:创建的节点名称后自动添加序号,如节点名称为"node-",自动添加为"node-1",顺序添加为"node-2"

3:EPHEMERAL                                 //  临时节点, 临时节点:节点创建后在创建者超时连接或失去连接的时候,节点会被删除。临时节点下不能存在字节点。

4:EPHEMERAL_SEQUENTIAL        //  临时排序节点, 排序节点:创建的节点名称后自动添加序号,如节点名称为"node-",自动添加为"node-1",顺序添加为"node-2"

zkcli客户端操作文件系统(命令行操作命令):以根节点为例,“/”

1、help       -查看帮助

 

2、查看节点

ls /

 

3、查看节点详细信息

stat /

信息说明: 

1)czxid-创建节点的事务zxid

  每次修改ZooKeeper状态都会收到一个zxid形式的时间戳,也就是ZooKeeper事务ID。

  事务ID是ZooKeeper中所有修改总的次序。每个修改都有唯一的zxid,如果zxid1小于        zxid2,那么zxid1在zxid2之前发生。

2)ctime - znode被创建的毫秒数(从1970年开始)

3)mzxid - znode最后更新的事务zxid

4)mtime - znode最后修改的毫秒数(从1970年开始)

5)pZxid-znode最后更新的子节点zxid

6)cversion - znode子节点变化号,znode子节点修改次数

7)dataversion - znode数据变化号

8)aclVersion - znode访问控制列表的变化号

9)ephemeralOwner- 如果是临时节点,这个是znode拥有者的session id。如果不是临时节点则是0。

10)dataLength- znode的数据长度

11)numChildren - znode子节点数量

4、创建节点    create [-s] [-e] path data acl

4、1 创建持久节点      create /lasting (不加参数默认创建持久节点,后边没有跟数据)

 

查看znode详细信息是这样的(datalength=0,没有数据)

 

4、2 往这个znode添加数据 set /lasting  123testdata      (创建节点的时候就添加数据:create /lasting 123testdata),当前datalength=11

4、3 获取刚才添加的数据    get /lasting

 

4、4  不支持递归创建znode   create /aaa/bbb/ccc

4、5 创建临时节点   create -e /temporary    -e  临时节点参数

查看临时节点的详情

临时节点添加数据

临时节点获取数据

 

4、6 断开session连接,临时节点没了,上图ephemeralOwner=0x100005d04a70003就表示,这个节点所属的就是这个session

 

 

4、7 临时节点不支持有子节点

 

4、8 创建持久顺序节点(-s参数)持久顺序节点会在节点名称后边添加序号,

 

4、9 创建临时顺序节点(-e -s)

创建顺序节点会把无序节点的数值也带上

 

5、 删除节点,delete /lasting/aa000000     deleteall /lasting(删除节点下边还有子节点的)

 

6、节点的监听  ls -w path

 

当有其他的session改变此节点的子节点时,会触发

 

7、节点数据的监听  get -w path

 

8、关于data version   (分布式环境会用到)

set path data [version]

作用是更新path路径节点的数据内容,data为更新的数据,version为指定数据被更新的版本,如果version比当前的dataVersion还小,则会报错

delete path [version]

删除路径为path的节点,version指定被删除数据的版本,一般不指定,表示删除最新的数据版本,若version为旧的版本则会报错

zookeeper znode节点的ACL权限

ACL全称为Access Control List(访问控制列表),用于控制资源的访问权限。ZooKeeper使用ACL来控制对其znode(ZooKeeper数据树的数据节点)的访问。ACL实现与UNIX文件访问权限非常相似:它使用权限位来允许/禁止针对节点的各种操作以及位应用的范围。与标准UNIX权限不同,ZooKeeper节点不受用户(文件所有者),组和world(其他)的三个标准范围的限制。

zk利用ACL策略控制节点的访问权限,如节点数据读写、节点创建、节点删除、读取子节点列表、设置节点权限等。

在传统的文件系统中,一个文件拥有某个组的权限即拥有了组里的所有权限,文件或子目录默认会继承自父目录的ACL。而在Zookeeper中,znode的ACL是没有继承关系的,每个znode的权限都是独立控制的,只有客户端满足znode设置的权限要求时,才能完成相应的操作。Zookeeper的ACL,分为三个维度:scheme、id、permission,通常表示为:scheme:id:permission,schema代表授权策略,id代表用户,permission代表权限

一、scheme

scheme既采取的授权策略,不同的策略对应不同的校验方式,下面是几种常见的scheme:

  1. world:默认方式,相当于全世界都能访问
  1. auth:不使用任何id,表示任何经过身份验证的用户。
  1. digest:即用户名:密码这种方式认证,这也是业务系统中最常用的,使用username:password字符串生成MD5哈希,然后将其用作ACL的ID标识。通过以明文形式发送 例如:wangsaichao:123456 来完成身份验证。在ACL中使用时,表达式将是wangsaichao:G2RdrM8e0u0f1vNCj/TI99ebRMw=。
  1. ip:使用Ip地址认证

1、world

语法:world:anyone:cdrwa

创建节点默认的scheme,所有人都可以访问

 

2、digest

 语法:digest:username:BASE64(SHA1(password)):cdrwa

digest:是授权方式

username:BASE64(SHA1(password)):是id部分

cdrwa:权限部份

 用户名+密码授权访问方式,也是常用的一种授权策略。id部份是用户名和密码做sha1加密再做BASE64加密后的组合,比如设置一个节点的用户名为root,密码为123456,则表示方式为:

原:root:BASE64(SHA1(123456))

正确:root:u53OoA8hprX59uwFsvQBS3QuI00=。

密码加密需要用到zk的一个工具类来生成,

 

执行命令(执行位置在  lib下):java -cp zookeeper-3.7.0.jar:slf4j-api-1.7.30.jar org.apache.zookeeper.server.auth.DigestAuthenticationProvider root:123456

2、1设置权限

setAcl /ccc digest:root:u53OoA8hprX59uwFsvQBS3QuI00=:cdrwa

 

2、2给当前session添加权限

addauth digest root:123456

 

验证,退出当前session,还有没有权限

 

3、ip

基于客户端IP地址校验,限制只允许指定的客户端能操作znode。

比如,设置某个节点只允许IP为127.0.0.1的客户端能读写该写节点的数据:ip:127.0.0.1:rw

语法:setAcl /node ip:127.0.0.1:cdrwa

 

二、id

id是验证模式,不同的scheme,id的值也不一样。scheme为digest时,id的值为:username:BASE64(SHA1(password)),scheme为ip时,id的值为客户端的ip地址。scheme为world时,id的值为anyone。scheme为auth时,id为 username:password。

三、permission

znode可以拥有的权限还记得之前的授权语句,如:

digest:username:BASE64(SHA1(password)):cdrwa中的cdrwa即是permission。

CREATE(r):创建子节点的权限

DELETE(d):删除节点的权限

READ(r):读取节点数据的权限

WRITE(w):修改节点数据的权限

ADMIN(a):设置子节点权限的权限

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小丑西瓜9/article/detail/717019
推荐阅读
相关标签
  

闽ICP备14008679号