1.zookeeper 工作機制?
是乙個基於觀察者模式設計的分布式服務管理框架,它負責儲存和管理大家都關心的資料,然後接受觀察者的註冊,一旦這些資料的狀態發生變化,zookeeper就將負責通知已經在zookeeper上註冊 的那些觀察者做出相應的反應。
2.zookeeper特點
1)zookeeper:乙個領導者(leader),多個跟隨者(follower)組成的集群。
2)集群中只要有半數以上節點存活,zookeeper集群就能正常服務。
3)全域性資料一致:每個server儲存乙份相同的資料副本,client無論連線到哪個server,資料都是一致的。
4)更新請求順序進行,來自同乙個client的更新請求按其傳送順序依次執行。
5)資料更新原子性,一次資料更新要麼成功,要麼失敗。
6)實時性,在一定時間範圍內,client能讀到最新資料。
3.zookeeper 資料結構
zookeeper資料模型的結構與unix檔案系統很類似,整體上可以看作是一棵樹,每個節點稱做一 個znode。每乙個znode預設能夠儲存1mb的資料,每個znode都可以通過其路徑唯一標識。
應用場景
提供的服務包括:統一命名服務、統一配置管理、統一集群管理、伺服器節點動態上下線、負載均衡等。
4.zookeeper 內部原理
1.節點型別
持久(persistent):客戶端和伺服器端斷開連線後,建立的節點不刪除
短暫(ephemeral):客戶端和伺服器端斷開連線後,建立的節點自己刪除
1)持久化目錄節點 客戶端與zookeeper斷開連線後,該節點依舊存在
(2)持久化順序編號目錄節點 客戶端與zookeeper斷開連線後,該節點依舊存在,只是zookeeper給該節點名稱進行順序編號。
說明:建立znode時設定順序標識,znode名稱 後會附加乙個值,順序號是乙個單調遞增的計數 器,由父節點維護
注意:在分布式系統中,順序號可以被用於為所有的事件進行全域性排序,這樣客戶端可以通過順序號推斷事件的順序
(3)臨時目錄節點 客戶端與zookeeper斷開連線後,該節點被刪除
(4)臨時順序編號目錄節點 客戶端與zookeeper斷開連線後,該節點被刪除,只是 zookeeper給該節點名稱進行順序編號。
5.stat 結構體
czxid-建立節點的事務 zxid
每次修改 zookeeper 狀態都會收到乙個 zxid 形式的時間戳,也就是 zookeeper 事務 id
datalength- znode 的資料長度
numchildren - znode 子節點數量
6.***原理
7.客戶端命令列操作
分別建立 2 個普通節點 --節點名稱, 節點值
create /sanguo 「jinlian」
獲得節點的值
[zk: localhost:2181(connected) 5] get /sanguo
2.建立短暫節點
[zk: localhost:2181(connected) 7] create -e /sanguo/wuguo
3.在當前客戶端是能檢視到的
[zk: localhost:2181(connected) 3] ls /sanguo
4.退出當前客戶端然後再重啟客戶端
[zk: localhost:2181(connected) 12] quit
[atguigu@hadoop104 zookeeper-3.4.10]$ bin/zkcli.sh
5.再次檢視根目錄下短暫節點已經刪除
[zk: localhost:2181(connected) 0] ls /sanguo
先建立乙個普通的根節點/sanguo/weiguo
create /sanguo/weiguo
6.建立帶序號的節點
create -s /sanguo/weiguo/xiaoqiao 「jinlian」
created /sanguo/weiguo/xiaoqiao0000000000
7.如果原來沒有序號節點,序號從 0 開始依次遞增。如果原節點下已有 2 個節點,則再 排序時從 2 開始
created /sanguo/weiguo/xiaoqiao0000000000
8.修改節點資料值
[zk: localhost:2181(connected) 6] set /sanguo/weiguo 「simayi」
9.節點的值變化監聽
在 hadoop104 主機上註冊監聽/sanguo 節點資料變化
get /sanguo watch
10.在 hadoop103 主機上修改/sanguo 節點的資料
[zk: localhost:2181(connected) 1] set /sanguo 「xisi」
11.觀察 hadoop104 主機收到資料變化的監聽
watcher::
watchedevent state:syncconnected type:nodedatachanged path:/sanguo
節點的子節點變化監聽(路徑變化)
12.在 hadoop104 主機上註冊監聽/sanguo 節點的子節點變化
[zk: localhost:2181(connected) 1] ls /sanguo watch
在 hadoop103 主機/sanguo 節點上建立子節點
create /sanguo/jin 「simayi」
13.觀察 hadoop104 主機收到子節點變化的監聽
watcher::
watchedevent state:syncconnected type:nodechildrenchanged path:/sanguo
14.刪除節點
[zk: localhost:2181(connected) 4] delete /sanguo/jin
15.遞迴刪除節點
[zk: localhost:2181(connected) 15] rmr /sanguo/shuguo
16.檢視節點狀態
[zk: localhost:2181(connected) 17] stat /sanguo
8.zookeeper 寫資料流程.
9.zookeeper選舉機制–半數機制?
目前有5臺伺服器,每台伺服器均沒有資料,它們的編號分別是1,2,3,4,5,按編號依次啟動,它們的選擇舉過程如下:
每個人會給自己投一票。達到半數就會選擇myid最大的那個。
Zookeeper的知識點總結
1,角色 狀態 leader leading 繼承人 follower following 跟從但是有想法的 follower observer observering looking 觀望 leader掛點了或者集群剛啟動,一旦有了領導者它就消失 2.原子廣播 通過投票確定某一件事能不能做 過半原...
python大一知識點 python知識點複習
放假歸來,這幾天複習了一下好久不用的python,總結了一下知識點。語法基礎tuple與list的異同都由多個元素組成 tuple由 組成,list由組成 tuple不可變,list可變 tuple表示的是一種結構,而list表示的是多個事物的集合 tuple操作比list快 字串用法要點 轉義符和...
java se 知識點(一)
1.super 和 this 不能出現在static 修飾的方法中 2.呼叫建構函式時,this 呼叫和super 呼叫不能同時出現,因為都要在執行體的第一行 3.使用instanceof 可以讓型別轉換更安全 4.初始化塊的修飾符只能是static 5.使用基本包裝類提供的 value 方法,可以...