Zookeeper的quota機制可以設置節點個數及空間大小
語法
setquota -n|-b val path # 設置節點quota信息
listquota path # 獲取節點quota信息
deletequota # 刪除節點quota信息
注:-n 表示最大子節點個數(包括節點本身)
-b 表示該節點空間大小(byte)
設置節點quota
舉例
[zk: localhost:2181(CONNECTED) 1] create /quota quota # 創建節點
Created /quota
[zk: localhost:2181(CONNECTED) 4] listquota /quota
absolute path is /zookeeper/quota/quota/zookeeper_limits # 獲取節點quota信息,提示不存在
quota for /quota does not exist.
- 限制子節點個數
[zk: localhost:2181(CONNECTED) 5] setquota -n 3 /quota # 設置最大子節點個數爲3
[zk: localhost:2181(CONNECTED) 6] listquota /quota
absolute path is /zookeeper/quota/quota/zookeeper_limits
Output quota for /quota count=3,bytes=-1 # -1表示無限制
Output stat for /quota count=1,bytes=5
接下來我們測試一下,創建多個子節點
[zk: localhost:2181(CONNECTED) 7] create /quota/child1
Created /quota/child1
[zk: localhost:2181(CONNECTED) 8] create /quota/child2
Created /quota/child2
[zk: localhost:2181(CONNECTED) 9] create /quota/child3
Created /quota/child3
[zk: localhost:2181(CONNECTED) 10] create /quota/child4
Created /quota/child4
結果發現好像並沒有什麼作用,其實看一下日誌即可發現,日誌中會有警告信息,但是並不影響創建節點
從日誌中可以發現,當我們創建第三個子節點child3時,便開始警告,count=4,這是因爲quota節點本身也算一個。
-
限制節點空間大小
[zk: localhost:2181(CONNECTED) 11] setquota -b 100 /quota
org.apache.commons.cli.AlreadySelectedException: The option 'b' was specified but an option from this group has already been selected: 'n'
嗯,提示已經存在了quota信息 -n,難道是因爲我們之前設置的-n原因?換個節點
[zk: localhost:2181(CONNECTED) 13] create /quota1
Created /quota1
[zk: localhost:2181(CONNECTED) 14] setquota -b 100000 /quota1
org.apache.commons.cli.AlreadySelectedException: The option 'b' was specified but an option from this group has already been selected: 'n'
額…… 依然不行……
刪除quota信息
[zk: localhost:2181(CONNECTED) 2] listquota /quota
absolute path is /zookeeper/quota/quota/zookeeper_limits
Output quota for /quota count=3,bytes=-1
Output stat for /quota count=5,bytes=5
[zk: localhost:2181(CONNECTED) 3] delquota /quota
[zk: localhost:2181(CONNECTED) 4] redo 2
absolute path is /zookeeper/quota/quota/zookeeper_limits
quota for /quota does not exist.