一、节点配额概述

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是以前缀匹配路径,作用在指定路径路径及其子路径上。

.

Zookeeper笔记之quota的更多相关文章

  1. Zookeeper笔记之命令行操作

    $ZOOKEEPER_HOME/bin下的zkCli.sh进入命令行界面,使用help可查看支持的所有命令: 一.节点相关操作 create [-s] [-e] path data acl creat ...

  2. (转)ZooKeeper 笔记(1) 安装部署及hello world

    ZooKeeper 笔记(1) 安装部署及hello world   先给一堆学习文档,方便以后查看 官网文档地址大全: OverView(概述) http://zookeeper.apache.or ...

  3. zookeeper笔记(一)

    title: zookeeper笔记(一) zookeeper 安装简记 解压文件 $ tar -zxvf zookeeper-3.4.10.tar.gz -C 安装目录 创建软连接(进入安装目录) ...

  4. zookeeper笔记(二)

    title: zookeeper笔记(二) zookeeper ALC权限控制 getAcl path 可以查看某个node的权限 设置权限: 2. world方式 setAcl <path&g ...

  5. 分布式服务协调技术zookeeper笔记

    本文主要学习ZooKeeper的体系结构.节点类型.节点监听.常用命令等基础知识,最后还学习了ZooKeeper的高可用集群的搭建与测试.希望能给想快速掌握ZooKeeper的同学有所帮助. ZooK ...

  6. Zookeeper笔记3——原理及其安装使用

    Zookeeper到底能干什么? 1.配置管理:这个好理解.分布式系统都有好多机器,Zookeeper提供了这样的一种服务:一种集中管理配置的方法,我们在这个集中的地方修改了配置,所有对这个配置感兴趣 ...

  7. ZooKeeper 笔记(6) 分布式锁

    目前分布式锁,比较成熟.主流的方案有基于redis及基于zookeeper的二种方案. 大体来讲,基于redis的分布式锁核心指令为SETNX,即如果目标key存在,写入缓存失败返回0,反之如果目标k ...

  8. ZooKeeper 笔记(1) 安装部署及hello world

    先给一堆学习文档,方便以后查看 官网文档地址大全: OverView(概述) http://zookeeper.apache.org/doc/r3.4.6/zookeeperOver.html Get ...

  9. ZooKeeper 笔记(5) ACL(Access Control List)访问控制列表

    zk做为分布式架构中的重要中间件,通常会在上面以节点的方式存储一些关键信息,默认情况下,所有应用都可以读写任何节点,在复杂的应用中,这不太安全,ZK通过ACL机制来解决访问权限问题,详见官网文档:ht ...

随机推荐

  1. PAT甲题题解-1051. Pop Sequence (25)-堆栈

    将1~n压入最多为m元素的栈 给出k个出栈序列,问你是否能够实现. 能输出YES 否则NO 模拟一遍即可,水题. #include <iostream> #include <cstd ...

  2. 软工团队(hello world)组员介绍

    姜中希:喜欢编程,善于交际. 周盼超:喜欢编程. 王昭博:思路比较清晰,可以明确开发步骤. 刘洪阳:思想笔记广泛,可以把很多有关联的东西结合起来. 刘双勃:喜欢编程,踏实,比较容易坚持.

  3. 《实时控制软件设计》之Github提交作业步骤

    在掌握GIT/GITHUB基本操作后,接下来把第一次的编程作业提交到 https://github.com/RTCSD15/HOMEWORK1 ,把第二次的编程作业提交到https://github. ...

  4. Linux 基础一(系统分区、格式化与挂载)

    1.Linux 基础之系统分区与格式化 讲分区之前,先说一下硬盘结构:硬盘(机械)的横截面是一个圆,并且被分成等大小的扇区,每个扇区的大小是 512Byte,其中有 446Byte 被用来存储启动信息 ...

  5. PPT 遥控器

    1. 下载 最新版本: 百度袋鼠输入: http://daishu.baidu.com/?from=pptweb 百度PPT遥控器:http://ppt.baidu.com/ 2. 安装过程忽略 3. ...

  6. Jquery Cookie操作

    // 写入 $.cookie('the_cookie','the_value');// 读取 $.cookie('the_cookie');// 删除 $.cookie('the_cookie',nu ...

  7. sleep,yield,join,notify,wait,notifyAll区别

    1.  Thread.sleep(long) 和Thread.yield()都是Thread类的静态方法,在调用的时候都是Thread.sleep(long)/Thread.yield()的方式进行调 ...

  8. Vue实现对数组、对象的深拷贝、复制

    当组件间传递对象时,由于此对象的引用类型指向的都是一个地址(除了基本类型跟null,对象之间的赋值,只是将地址指向同一个,而不是真正意义上的拷贝),如下 数组: ,,]; var b = a; b.p ...

  9. 微信小程序填坑之旅一(接入)

    一.小程序简介 小程序是什么? 首先“程序”这两个字我们不陌生.看看你手机上的各个软件,那就是程序.平时的程序是直接跑在我们原生的操作系统上面的.小程序是间接跑在原生系统上的.因为它嵌入在微信中,受微 ...

  10. Enum 枚举值 (一) 获取描述信息

    封装了方法: public static class EnumOperate { public class BaseDescriptionAttribute : DescriptionAttribut ...