ZooKeeper是什麼?
ZooKeeper是一個開源的分散式服務框架,執行在Java環境中,主要用來解決分散式應用中遇到的資料管理問題:資料的釋出/訂閱、負載均衡、統一名稱服務、狀態同步服務、分散式協調/通知、叢集管理、Master選舉、分散式鎖盒分散式佇列等等。
簡而言之,zookeeper=檔案系統+監聽通知機制。
ZooKeeper允許分散式程序透過共享的分層名稱空間相互協調,ZooKeeper資料儲存在記憶體中,可以實現高吞吐量和低延遲數。可靠性方面使其不會稱為單點故障,嚴格的排序意味著可以在客戶端實現複雜的同步原語。
1 部署ZooKeeper
在部署ZooKeeper前,需要安裝配置JAVA環境,安裝如下:
1。1 下載ZooKeeper並解壓安裝
1。2 新增環境變數
1。3 修改ZooKeeper配置
cat /application/zookeeper-3。4。14/conf/zoo。cfg
1。4 建立資料儲存目錄及日誌目錄
mkdir /application/zookeeper-3。4。14/{data,logs}
1。5 啟動ZooKeeper
1。6 ZooKeeper執行程式簡介
1。6。1 zkServer。sh啟動檔案
zkServer。sh通常用來啟動、終止、重啟ZK伺服器,用法如下:
1。6。1 zkCli。sh客戶端連線
zkCli。sh是用來連線zk服務的指令碼程式檔案,使用該指令碼程式連線到ZK後,可管理ZK服務,用法如下:
create [-s] [-e] path data acl
(1)建立ZooKeeper持久節點
(2)建立ZooKeeper順序節點
(3)建立ZooKeeper臨時節點
(4)讀取節點命令 讀取節點命令有以下四個:
(a)ls path [watch]
(b)ls2 path [watch]
(c)get path [watch]
get
讀取資料內容和屬性資訊可以看到,
get
不像
ls2
一樣更夠列出/下的檔名稱,只顯示當前節點的屬性資訊
(d)
stat path [watch]
stat命令和get命令基本一致
(e)
set path data [version]
set命令用來更新節點資料內容 先使用ls2獲取當前節點的屬性資訊
(5)更新資料節點
(a)delete path [version]
持久節點以及順序節點只有使用刪除命令才能夠消失 使用delete命令來刪除持久節點permanent 注意:如果資料節點下有子目錄的時候必須先刪除子目錄,然後在刪除父目錄,否則使用delete是不可取的 例子:
(b)rmr path
rmr也同時刪除節點命令,但它和delete的區別在於,它會忽略節點下的子目錄,直接遞迴刪除資料節點下的所有目錄及資料節點
1。7 監控ZK的四字命令
ZooKeeper支援某些特定的四字命令與其互動,他們大多數是查詢命令,用來獲取ZK服務當前狀態及相關資訊。使用者在客戶端可透過telnet或nc向ZooKeeper提交相應的命令 可用的四字命令如下:
(a)rook 測試是否啟動了ZooKeeper
(b)stat 查詢當前連線的埠及IP和其它資訊
(c)srvr 顯示當前ZK服務的資訊,跟stat很相似,但是它只顯示ZK的自身資訊
(d)conf 輸出ZK相關的服務配置相信資訊
(e)cons 列出所有連線到ZK伺服器的客戶端的完全連線/會話詳細資訊
(f)wchs 列出watch的詳細資訊
(g)envi 列出當前jdk,以及zk所用到的jdk配置資訊
(h)dump 列出未經處理的回話和臨時節點
(i)reqs 列出未處理的請求
(j)mntr 列出一些監控資訊