ZooKeeper 配額指南
部署和管理指南
配額
ZooKeeper 具有名稱空間和位元組配額。您可以使用 ZooKeeperMain 類別設定配額。如果使用者超過分配給他們的配額,ZooKeeper 會列印 警告 訊息。這些訊息會列印在 ZooKeeper 的記錄中。
注意:名稱空間
配額是指限制路徑下子節點數量的計數配額(包含路徑本身)。
$ bin/zkCli.sh -server host:port**
上述命令提供使用配額的命令列選項。
設定配額
-
您可以使用
setquota
在 ZooKeeper 節點上設定配額。它有使用-n
(用於名稱空間/計數)和-b
(用於位元組/資料長度)設定配額的選項。 -
ZooKeeper 配額儲存在 ZooKeeper 本身的 /zookeeper/quota 中。為了禁止其他人變更配額,使用者可以設定 /zookeeper/quota 的 ACL,讓只有管理員可以讀取和寫入。
-
如果配額不存在於指定的路徑中,請建立配額,否則更新配額。
-
使用者設定的配額範圍是指定路徑下(包含路徑本身)的所有節點。
-
為了簡化當前目錄/階層結構中配額的計算,只能設定一個完整的樹狀路徑(從根節點到葉節點)配額。在路徑中設定配額時,其父節點或子節點已具有配額的情況下,
setquota
將拒絕並告知指定的父節點或子節點路徑,使用者可以根據具體情況調整配額分配(刪除/上移/下移配額)。 -
結合 Chroot,配額將在不同的應用程式之間具有更好的隔離效果。例如
# Chroot is: 192.168.0.1:2181,192.168.0.2:2181,192.168.0.3:2181/apps/app1 setquota -n 100000 /apps/app1
-
使用者無法在 /zookeeper/quota 下的路徑上設定配額
-
配額支援軟配額和硬配額。軟配額僅在超過配額時記錄警告資訊,但硬配額也會擲出
QuotaExceededException
。在同一路徑上設定軟配額和硬配額時,硬配額具有優先權。
列出配額
你可以使用 listquota 來列出 ZooKeeper 節點上的配額。
刪除配額
你可以使用 delquota 來刪除 ZooKeeper 節點上的配額。