Zookeeper笔记之quota
一、节点配额概述
zookeeper中可以往节点存放数据,但是一般来说存放数据总是要有个度量的对吧,不然空间就那么大,如果某个节点将空间全占用了其它节点没得用了,所以zookeeper提供了一个对节点配额功能,不过这个配额功能有点鸡肋,当占用的空间超过了设置的大小时只会打印WARN级别的日志提醒而不是直接让超出配额的操作失败。既然只是在日志中打印一个警告信息,首先就是要找到日志的位置,默认情况下,日志的位置在$ZOOKEEPER/bin/zkEnv.sh中设置:
可以看到,如果不设置默认会将日志输出在zkEnv.sh脚本所在的目录,即将日志输出到$ZOOKEEPER/bin/zookeeper.out文件中。
配额类型
配额分为两种,一种是对子节点数量的限制,称之为count限制,一种是对节点能够存放的数据大小的限制,称之为byte限制。
配额信息的保存位置
zookeeper的配额信息是存储在/zookeeper/quota路径下的,可以打开看一下:
查看更详细的信息:
zookeeper_limits是对此节点施加的限制,即最大能够是多少:
zookeeper_stats是节点的当前状态,即当前已经用了多少:
配额可以通过zkCli.sh命令行工具进行相关设置,下面将相关的几个命令进行详细介绍。
二、quota相关命令
setquota -n|-b val path
用来设置某个节点的子节点个数和其本身的数据长度。
-n 限制此节点最大可拥有多少个子节点
-b 限制此节点能够存储的数据最大是多少个字节
-n 选项有点不太好理解,因为在树形结构中的限制子节点数量一般分为有两种情况:
1. 只算直接孩子节点的数量,孩子节点的子节点就不再算数
2. 只要是挂在这个节点下的节点都算数,是递归计算
那么这里的-n是指的哪种情况呢?来做一个小小的实验验证一下。
创建一个节点/foo,为其配额子节点数为3,然后在下面创建几个孩子节点:
然后查看日志:
这条日志是在创建/foo/c的时候打印的,但是仔细一算好像不太对哦,/foo/a、/foo/b、/foo/c这才三个节点啊,并没有超出限制为什么count显示4呢?这是因为当前节点本身还占用了一个计数。
-b选项和-n选项差不多:
创建/foo/a时打印了警告日志:
listquota path
显示指定路径下已经设置的配置
delquota [-n|-b] path
用于删除已经创建的quota:
需要注意的是删除节点时并不会自动删除绑定在特定路径上的quota,需要手动删除。
三、总结
1. zookeeper的quota并没有实际的限制作用,超出了也只是打印WARN级别日志。
2. quota有子节点数量和字节大小限制两种。
3. quota是以前缀匹配路径,作用在指定路径路径及其子路径上。
.
最新文章
- WinForm中显示PDF文件
- java 解 poj 1000
- React生命周期
- pythonchallenge 解谜 Level 3
- Javascript函数式编程要掌握的知识点讲解
- 特殊符号 &;&; 和 ||
- 第六章 类型(class)和成员基础
- C#多态;父类引用指向子类对象;new和override的区别;new、abstract、virtual、override,sealed关键字区别和使用代码示例;c#类的初始化顺序
- bnuoj 4357 传送阵
- nginx Location配置总结(转)
- Mysql--mysqldump命令 备份数据库
- PYCURL ERROR 6 - “Couldn't resolve host 'mirrorlist.centos.org'”
- 开发环境配置--Ubuntu+Qt4+OpenCV(一)
- Python学习笔记(十)
- iOS UIAlertController中加入倒计时,输入框,Swift讲解
- 【转】NO.1、 appium之ios环境搭建
- Elastic 之倒排索引(二)
- Python学习笔记,day2
- input checkbox复选框取值
- jQuery源码解析对象实例化与jQuery原型及整体构建模型分析(一)