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是之前綴匹配路徑,做用在指定路徑路徑及其子路徑上。

 

.

相關文章
相關標籤/搜索