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