37、zookeeper一般都有哪些使用場景?
1、面試題
zk都有哪些使用場景?
2、面試官心裡分析
zk,zookeeper,你們現在在聊的面試topic,是分散式系統,他其實已經跟你聊完了dubbo以及相關的一些問題,確認,你現在分散式服務框架,rpc框架,基本都有一些認知。可能開始要跟你聊分散式相關的其他問題了。
分散式鎖這個東西,很常用的,你做java系統開發,分散式系統,可能會有一些場景會用到。最常用的分散式鎖就是zookeeper來做分散式鎖。
其實說實話,問這個問題,一般就是看看你是否瞭解zk,因為zk是分散式系統中很常見的一個基礎系統。而且問的話常問的就是說zk的使用場景是什麼?看你知道不知道一些基本的使用場景。但是其實zk挖深了自然是可以問的很深很深的。
友情提示,如果有某個同學連zookeeper是什麼都不知道?聽說過,連個基本原理都不知道,連個demo都沒寫過。我建議你先百度一下zookeeper入門,最好寫helloworld級別的demo程式,體驗一把。
3、面試題剖析
大致來說,zk的使用場景如下,我就舉幾個簡單的,大家能說幾個就好了:
(1)分散式協調:這個其實是zk很經典的一個用法,簡單來說,就好比,你A系統傳送個請求到mq,然後B訊息消費之後處理了。那A系統如何知道B系統的處理結果?用zk就可以實現分散式系統之間的協調工作。A系統傳送請求之後可以在zk上對某個節點的值註冊個監聽器,一旦B系統處理完了就修改zk那個節點的值,A立馬就可以收到通知,完美解決。
zookeeper的分散式協調場景.png
(2)分散式鎖:對某一個數據連續發出兩個修改操作,兩臺機器同時收到了請求,但是隻能一臺機器先執行另外一個機器再執行。那麼此時就可以使用zk分散式鎖,一個機器接收到了請求之後先獲取zk上的一把分散式鎖,就是可以去建立一個znode,接著執行操作;然後另外一個機器也嘗試去建立那個znode,結果發現自己建立不了,因為被別人建立了。那隻能等著,等第一個機器執行完了自己再執行。
zookeeper的分散式鎖場景.png
(3)元資料/配置資訊管理:zk可以用作很多系統的配置資訊的管理,比如kafka、storm等等很多分散式系統都會選用zk來做一些元資料、配置資訊的管理,包括dubbo註冊中心不也支援zk麼。
zookeeper的元資料_配置管理場景.png
(4)HA高可用性:這個應該是很常見的,比如hadoop、hdfs、yarn等很多大資料系統,都選擇基於zk來開發HA高可用機制,就是一個重要程序一般會做主備兩個,主程序掛了立馬通過zk感知到切換到備用程序。
04_zookeeper的HA高可用性場景.png