面試官問:ZooKeeper 有幾種節點型別?別回答 4 種啦
本文作者:HelloGitHub-
老荀
好久沒更新 ZK 的文章了,我想死你們啦。之前釋出的 HelloZooKeeper 系列文章完結後,專案收穫了將近 600 個 star。這遠遠超過了我自己的預期,在這裡感謝大家的支援~
後面會繼續 ZooKeeper 的話題,透過單篇的形式就某個 ZK 的話題繼續聊,今天我們先來看看 ZK 的節點型別。話不多說,我們進入今天的主題~
一、關於 ZK 的節點型別
大家如果刷過 ZK 相關面試題的話,就一定會刷到過 “ZK 有幾種節點型別?”,大家通常背書的答案的話是:4 種!但其實 ZK (3。6。2)服務端支援 7 種節點型別,分別是:
持久
持久順序
臨時
臨時順序
容器
持久 TTL
持久順序 TTL
這 7 種類型之前的文章中也有提到過,但是並沒有展開講。這次更新的單篇想要把這 7 種類型的節點,認認真真的講一遍!Let‘s GO
二、簡單介紹
2。1 持久、臨時
持久
不用我多說,是用的最多的一種型別,也是預設的節點型別,
臨時
節點相較於
持久
節點來說,就是它會隨著客戶端會話結束而被刪除,通常可以用在一些特定的場景,例如分散式鎖釋放,健康檢查等。
2。2 持久順序、臨時順序
這兩種我放在一起介紹,因為他們相對於上面兩種的特性就是 ZK 會自動在這兩種節點之後增加一個數字的字尾,而路徑 + 數字字尾是能保證唯一的,這數字字尾的應用場景可以實現諸如分散式佇列,分散式公平鎖等。
2。3 容器
容器
節點是 3。5 以後新增的節點型別,只要在呼叫
create
方法時,指定
CreateMode
為
CONTAINER
即可建立
容器
的節點型別,
容器
節點的表現形式和持久節點是一樣的,但是區別是 ZK 服務端啟動後,會有一個單獨的執行緒去掃描,所有的容器節點,當發現
容器
節點的子節點數量為 0 時,會自動刪除該節點,除此之外和
持久
節點沒有區別,官方註釋給出的使用場景是
Container nodes are special purpose nodes useful for recipes such as leader, lock, etc。
說可以用在 leader 或者鎖的場景中。
2。4 持久 TTL、持久順序 TTL
關於
持久
和
順序
這兩個關鍵字,不用我再解釋了,這兩種型別的節點重點是後面的
TTL
,
TTL
是
time to live
的縮寫,指帶有存活時間,簡單來說就是當該節點下面沒有子節點的話,超過了
TTL
指定時間後就會被自動刪除,特性跟上面的
容器
節點很像,只是
容器
節點沒有超時時間而已,但是
TTL
啟用是需要額外的配置(這個之前也有提過)配置是
zookeeper。extendedTypesEnabled
需要配置成
true
,否則的話建立
TTL
時會收到
Unimplemented
的報錯
三、原理介紹
單純的
持久
和
臨時
節點我就不介紹了,之前的系列文章有講
3。1 順序關鍵字
客戶端建立一個
順序
節點的時候,服務端得知當前節點是
順序
節點的時候會自動給路徑加上字尾,字尾就是父節點的 cversion,代表建立子節點的個數
if (createMode。isSequential()) {
path = path + String。format(Locale。ENGLISH, “%010d”, parentCVersion);}
就是這麼簡單~
3。2 容器、TTL 關鍵字
這兩種其實可以放在一起講,服務端在啟動的時候會額外啟動一個定時任務執行緒,會定期的掃描所有的
容器
和
TTL
的節點,逐一判斷子節點的數量以及一些相關配置,來決定是否刪除,首先整個邏輯是在
ContainerManager
中,定時任務是由
TimeTask
實現的,相關的配置有
四、小結
持久
關鍵字:客戶端不主動刪除的話,節點資料會一直存在
臨時
關鍵字:客戶端連線斷開後,節點資料會被一起刪除
順序
關鍵字:服務端會自動為該節點加數字字尾
容器
:服務端會定期掃描這些節點,當該節點下面沒有子節點時(或其他條件時)服務端會自動刪除節點
TTL
:需要額外配置才能啟用,基本和
容器
相同,當超過
TTL
時間節點下面都沒有再建立子節點時會被刪除,但是當建立子節點會重置該超時時間
ZKr~好久沒更了,這次先挑一個簡單的話題。後面大家想學哪些 ZK 的知識可以留言告訴我。
關注「HelloGitHub」更多驚喜等著你
相關文章
- 2021-09-07加藥箱裝置用什麼材質是對的?
- 2021-04-23Docker映象例項剖析
- 2021-03-29同為減配的ZK Protro系列 誰更配的上頂級後衛實戰鞋?
- 2021-03-26溥儀晚年去看望還健在的太監,太監喊了3個字,溥儀聽後讓他閉嘴
- 2021-03-23為果凍注入絢爛色彩《果凍染料》借模擬體驗玩法打造解壓手遊