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

 

.


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM