1:定義
- 相當於是一個數據庫
- 是一個分佈式協調框架,實現HA
- 是一個分佈式鎖的管理框架,實現秒殺
2:提供的功能
-
分佈式協調
-
分佈式鎖
-
數據同步(端口:2888),選舉機制(投票,端口:3888)
主要的功能在於存儲數據和監聽
3:工作機制
整體運行機制
存儲數據:
Zookeeper的數據模型是樹結構,在內存數據庫中,存儲了整棵樹的內容,包括所有的節點路徑、節點數據、ACL信息,Zookeeper會定時將這個數據存儲到磁盤上。
1、DataTree
DataTree是內存數據存儲的核心,是一個樹結構,代表了內存中一份完整的數據。DataTree不包含任何與網絡、客戶端連接及請求處理相關的業務邏輯,是一個獨立的組件。
2、DataNode
DataNode是數據存儲的最小單元,其內部除了保存了結點的數據內容、ACL列表、節點狀態之外,還記錄了父節點的引用和子節點列表兩個屬性,其也提供了對子節點列表進行操作的接口。
3、ZKDatabase
Zookeeper的內存數據庫,管理Zookeeper的所有會話、DataTree存儲和事務日誌。ZKDatabase會定時向磁盤dump快照數據,同時在Zookeeper啓動時,會通過磁盤的事務日誌和快照文件恢復成一個完整的內存數據庫。
監聽節點信息
如果某臺機器節點宕機,通過監聽功能向zookeeper會發送一個下線通知,然後重新通過回調process方法,重新獲取服務器列表,並在此註冊監聽。
4:應用場景
- 集羣統一的配置管理
- 集羣同一命名服務
- 集羣統一管理
- 服務器的動態上下線感知
- 負載均衡,但並不是特別擅長
5:啓動命令
在主節點,從節點任意目錄下輸入:zkServer.sh start
然後在各個節點查看狀態,主節點爲leader,從節點爲follower,命令:zkServer.sh status
6:選舉機制
節點數量一般設置爲奇數
7:客戶端啓動命令
啓動客戶端:
zkCli.sh
查看幫助:
help
查看當前Znode所包含的內容
ls /
創建節點
create /hunter18
創建短暫Znode
create -e /itstar hunter
創建呆序號znode
create -s /bigdata hunter
查看此節點的詳細信息
ls2 /
獲得節點值監聽
ls /hunter watch
監聽路徑
ls / watch
修改Znode數據
set /hunter iiiii
刪除節點
delete /henter