zookeeper 知識點一

2021-10-01 05:33:10 字數 3743 閱讀 9289

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 方法,可以...