Zookeeper笔记之quota

1、节点配额概述

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

image

能够看到,若是不设置默认会将日志输出在zkEnv.sh脚本所在的目录,即将日志输出到$ZOOKEEPER/bin/zookeeper.out文件中。命令行

 

配额类型

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

 

配额信息的保存位置

zookeeper的配额信息是存储在/zookeeper/quota路径下的,能够打开看一下:日志

image

查看更详细的信息:blog

image

zookeeper_limits是对此节点施加的限制,即最大可以是多少:递归

image

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

image

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

 

2、quota相关命令

setquota -n|-b val path

用来设置某个节点的子节点个数和其自己的数据长度。配置

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

-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

 

3、总结

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

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

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

 

.

相关文章
相关标签/搜索