Zookeeper(二)Zookeeper安装及常用命令总结

一、Linux环境安装Zookeeper

  话不多说,直接上命令,按步骤执行即可~

1、查看JDK版本【Zookeeper需要Java环境】
java ‐version

2、下载并解压Zookeeper
wget http://archive.apache.org/dist/zookeeper/zookeeper-3.5.8/apache-zookeeper-3.5.8-bin.tar.gz
tar -zxvf apache-zookeeper-3.5.8-bin.tar.gz

3、重命名配置文件zoo_sample.cfg【备份原来的配置文件】
cd apache-zookeeper-3.5.8-bin/conf/
cp zoo_sample.cfg zoo.cfg

4、启动Zookeeper
bin/zkServer.sh start conf/zoo.cfg& #最后的‘&‘表示以守护线程的方式启动

5、连接Zookeeper
bin/zkCli.sh -server IP地址:2181 #默认端口为2181

二、Zookeeper的常用操作

创建节点

1、创建节点的命令格式
create [‐s] [‐e] [‐c] [‐t ttl] 目录 [data] [acl]

??:create /node1
  • -s : 顺序节点
  • -e : 临时节点
  • -c : 容器节点
  • -t : 可以给节点添加过期时间,默认禁用,需要通过系统参数启用
  • data :节点值
  • acl :权限控制【下面会介绍】

  中括号为可选项,没有则默认创建持久化节点

  PS:Zookeeper没有相对路径的说法,任何对节点的操作都需要以/开头

  PS:临时节点不能创建子节点

  PS:容器节点主要用来容纳字节点,如果没有给其创建子节点,容器节点表现和持久化节点一样,如 果给容器节点创建了子节点,后续又把子节点清空,容器节点也会被zookeeper删除。【分布式锁的父节点一般就是容器节点,因为当容器节点如果没有子节点(标识锁定的线程)时,会自动删除,不需要额外维护】

查看节点值

1、查看节点
get /node1 #查看/node1节点的值
ls / #查看/下的所有节点

修改节点

1、修改节点
set /node1 ‘this is value‘ #设置/node1节点的值为this is value
set -v 2 /node1 ‘new value‘ #带上版本号去修改/node1节点的值为new value【带版本号可以实现类似于乐观锁的功能】

查看节点状态

1、查看节点状态
stat /node1

Zookeeper(二)Zookeeper安装及常用命令总结

  • cZxid :创建znode的事务ID。
  • mZxid :最后修改znode的事务ID。
  • pZxid :最后添加或删除子节点的事务ID【子节点列表发生变化才会发生改变】。
  • ctime :znode创建时间。
  • mtime :znode最近修改时间。
  • dataVersion :znode的当前数据版本【修改数据时可以用上这个字段实现乐观锁,与数据乐观锁类似的使用方式】。
  • cversion :znode的子节点结果集版本【一个节点的子节点增加、删除都会影响这个版本】。
  • aclVersion :表示对此znode的acl版本。
  • ephemeralOwner :znode是临时znode时,表示znode所有者的sessionID。 如果 znode不是临时znode,则该字段设置为零。
  • dataLength :znode数据字段的长度。
  • numChildren :znode的子znode的数量。

三、事件监听机制

  针对节点的监听:由特定的事件触发,对应的监听会被移除。PS:事件监听都是一次性的

  使用方法:

get ‐w /path  #注册监听的同时获取数据 
stat ‐w /path  #对节点进行监听,且获取元数据信息

  Zookeeper事件类型:

  • None :连接建立事件
  • NodeCreated :节点创建
  • NodeDeleted :节点删除
  • NodeDataChanged :节点数据变化
  • NodeChildrenChanged :子节点列表变化
  • DataWatchRemoved :节点监听被移除
  • ChildWatchRemoved :子节点监听被移除

Zookeeper(二)Zookeeper安装及常用命令总结

四、ACL 权限控制

  定义:权限控制,可以控制节点的读写操作,保证数据的安全性。

  组成:权限模式(Scheme)、授权对象(ID)、权限信息(Permission)

Scheme(权限模式)

  用来设置ZooKeeper服务器进行权限验证的方式。ZooKeeper 的权限验证方式大体分为两种类型:

范围验证

  定义:针对一个IP或者一段IP地址授予某种权限

  举个??:比如我们可以让一个IP地址为“120.24.58.161”的机器对服务器上的某个数据节点具有写入的权限。或者也可以通过“120.24.58.162/180”给一段IP地址的机器赋权。

口令验证

  定义:使用用户名和密码验证的方式

  在ZooKeeper中这种验证方式是Digest认证,而Digest这种认证方式首先在客户端传送“username:password”这种形式的权限表示符后,ZooKeeper服务端会对密码部分使用 SHA-1和BASE64算法进行简单加密,以保证安全性。

world模式

  定义:默认方式,相当于全世界都能访问。

auth

  定义:不使用任何id,表示任何经过身份验证的用户【能登录就行~】

授权对象(ID)

  定义:把权限赋予谁

  举个??:如果我们选择采用IP方式,使用的授权对象可以是一个IP地址或IP地址段

  举个??:如果使用Digest或Super方式,则对应于一个用户名

  PS:World 模式,是授权系统中所有的用户。

权限信息(Permission)

  权限就是指我们可以在数据节点上执行的操作种类,Zookeeper中已经定义好的权限有 5 种:

  • 创建权限(c: create):授予权限的对象可以在数据节点下创建子节点。
  • 更新权限(w: wirte):授予权限的对象可以更新该数据节点。
  • 读取权限(r: read):授予权限的对象可以读取该节点的内容以及子节点的列表信息。
  • 删除权限(d: delete):授予权限的对象可以删除该数据节点的子节点。
  • 管理者权限(a: admin):授予权限的对象可以对该数据节点体进行ACL权限设置。

常用命令

1、获取/node1节点的acl权限 
getAcl /node1

2、修改/node1节点的acl权限
setAcl /node1 ip:127.0.0.1:cdrwa #ip的形式设置

 

Zookeeper(二)Zookeeper安装及常用命令总结

上一篇:C# 带滚动条的Label控件


下一篇:ES11的Promise.allSettled