zoukankan      html  css  js  c++  java
  • Zookeeper笔记之quota

    一、节点配额概述

    zookeeper中可以往节点存放数据,但是一般来说存放数据总是要有个度量的对吧,不然空间就那么大,如果某个节点将空间全占用了其它节点没得用了,所以zookeeper提供了一个对节点配额功能,不过这个配额功能有点鸡肋,当占用的空间超过了设置的大小时只会打印WARN级别的日志提醒而不是直接让超出配额的操作失败。既然只是在日志中打印一个警告信息,首先就是要找到日志的位置,默认情况下,日志的位置在$ZOOKEEPER/bin/zkEnv.sh中设置:

    image

    可以看到,如果不设置默认会将日志输出在zkEnv.sh脚本所在的目录,即将日志输出到$ZOOKEEPER/bin/zookeeper.out文件中。

    配额类型

    配额分为两种,一种是对子节点数量的限制,称之为count限制,一种是对节点能够存放的数据大小的限制,称之为byte限制。

    配额信息的保存位置

    zookeeper的配额信息是存储在/zookeeper/quota路径下的,可以打开看一下:

    image

    查看更详细的信息:

    image

    zookeeper_limits是对此节点施加的限制,即最大能够是多少:

    image

    zookeeper_stats是节点的当前状态,即当前已经用了多少:

    image

    配额可以通过zkCli.sh命令行工具进行相关设置,下面将相关的几个命令进行详细介绍。

    二、quota相关命令

    setquota -n|-b val path

    用来设置某个节点的子节点个数和其本身的数据长度。

    -n 限制此节点最大可拥有多少个子节点

    -b 限制此节点能够存储的数据最大是多少个字节

    -n 选项有点不太好理解,因为在树形结构中的限制子节点数量一般分为有两种情况:

    1. 只算直接孩子节点的数量,孩子节点的子节点就不再算数

    2. 只要是挂在这个节点下的节点都算数,是递归计算

    那么这里的-n是指的哪种情况呢?来做一个小小的实验验证一下。

    创建一个节点/foo,为其配额子节点数为3,然后在下面创建几个孩子节点:

    image 

    然后查看日志:

    image 

    这条日志是在创建/foo/c的时候打印的,但是仔细一算好像不太对哦,/foo/a、/foo/b、/foo/c这才三个节点啊,并没有超出限制为什么count显示4呢?这是因为当前节点本身还占用了一个计数。

    -b选项和-n选项差不多:

    image 

    创建/foo/a时打印了警告日志:

    image 

    listquota path

    显示指定路径下已经设置的配置

    image 

    delquota [-n|-b] path

    用于删除已经创建的quota:

    image 

    需要注意的是删除节点时并不会自动删除绑定在特定路径上的quota,需要手动删除。

    image

    三、总结

    1. zookeeper的quota并没有实际的限制作用,超出了也只是打印WARN级别日志。

    2. quota有子节点数量和字节大小限制两种。

    3. quota是以前缀匹配路径,作用在指定路径路径及其子路径上。

    .

  • 相关阅读:
    正则表达式
    9.4、分布式进程
    Linux文件编辑工具——VIM
    14 Linux网络管理
    13.Linux系统服务
    12.Linux进程管理
    11.Linux磁盘管理——lvm,raid
    10.Linux磁盘管理
    09.Linux软件包管理——(YUM 、RPM)
    07.Linux 压缩打包
  • 原文地址:https://www.cnblogs.com/cc11001100/p/9971808.html
Copyright © 2011-2022 走看看