Zookeeper有哪些應用場景?面試官希望聽到這“4點”

zookeeper 都有哪些使用場景?

Zookeeper有哪些應用場景?面試官希望聽到這“4點”

 

面試官心理分析

假設現在聊的話題是分佈式系統,面試官跟你聊完了 dubbo 相關的一些問題之後,已經確認你對分佈式服務框架/RPC框架基本都有一些認知了。

那麼接下來他可能開始要跟你聊分佈式相關的其它問題了,比如分佈式鎖。

分佈式鎖這個東西很常用,無論做 Java 系統開發或者分佈式系統,都可能會有一些場景會用到。而最常用的分佈式鎖就是基於 zookeeper 來實現的。

說實話,問這個問題,一般就是看看你是否瞭解 zookeeper,因爲 zookeeper 是分佈式系統中很常見的一個基礎系統。

並且面試官問的話,常問的就是 zookeeper 的使用場景是什麼?看你知道不知道一些基本的使用場景。當然其實 zookeeper 挖深了自然是可以問的很深很深的。

面試題剖析

大致來說,zookeeper 的使用場景如下,我就舉下面幾個簡單的例子,大家能說這幾個就OK了:

分佈式協調

分佈式鎖

元數據/配置信息管理

HA高可用性

分佈式協調

這個其實是 zookeeper 很經典的一個用法,簡單來說,就好比你 A 系統發送個請求到 mq,然後 B 系統消息消費之後處理了。

那 A 系統如何知道 B 系統的處理結果?

答案是:用 zookeeper 就可以實現分佈式系統之間的協調工作。A 系統發送請求之後可以在 zookeeper 上對某個節點的值註冊個監聽器,一旦 B 系統處理完了就修改 zookeeper 那個節點的值,A 系統立馬就可以收到通知,完美解決。

下圖用一個用戶提交訂單請求展示了整個過程:

Zookeeper有哪些應用場景?面試官希望聽到這“4點”

 

分佈式鎖

這是zk的第二個使用場景。舉個栗子,對某一個數據連續發出兩個修改操作,兩臺機器同時收到了請求,但是隻能一臺機器先執行完另外一個機器再執行。

那麼此時就可以使用 zookeeper 分佈式鎖,一個機器接收到了請求之後先獲取 zookeeper 上的一把分佈式鎖,就可以去創建一個 znode,接着執行操作;

然後另外一個機器也嘗試去創建那個 znode,結果發現自己創建不了,因爲被別人創建了,那隻能等着,等第一個機器執行完了自己再執行。加q羣:478052716 免費領取(Java架構資料,視頻資料,BATJ面試資料)

整個過程,如下圖所示:

Zookeeper有哪些應用場景?面試官希望聽到這“4點”

 

元數據/配置信息管理

第三個場景,zookeeper 可以用作很多系統的配置信息的管理,比如 kafka、storm 等等很多分佈式系統都會選用 zookeeper 來做一些元數據、配置信息的管理,包括 dubbo 註冊中心不也支持 zookeeper 麼?

下圖展示瞭如何用zookeeper管理dubbo註冊中心。

Zookeeper有哪些應用場景?面試官希望聽到這“4點”

 

HA高可用性

第四個應用場景即高可用(HA),這個應該是很常見的。

比如 hadoop、hdfs、yarn 等很多大數據系統,都選擇基於 zookeeper 來開發 HA 高可用機制。

具體來說就是一個重要進程一般會做主備兩個,主進程掛了立馬通過 zookeeper 感知到切換到備用進程。

同樣還是通過一張圖來看看

Zookeeper有哪些應用場景?面試官希望聽到這“4點”

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章