天天看點

zookeeper 都有哪些使用場景? - 米兜Java

zookeeper 都有哪些使用場景?

面試題

zookeeper 都有哪些使用場景?

面試官心理分析

現在聊的 topic 是分布式系統,面試官跟你聊完了 dubbo 相關的一些問題之後,已經确認你對分布式服務架構/RPC架構基本都有一些認知了。那麼他可能開始要跟你聊分布式相關的其它問題了。

分布式鎖這個東西,很常用的,你做 Java 系統開發,分布式系統,可能會有一些場景會用到。最常用的分布式鎖就是基于 zookeeper 來實作的。

其實說實話,問這個問題,一般就是看看你是否了解 zookeeper,因為 zookeeper 是分布式系統中很常見的一個基礎系統。而且問的話常問的就是說 zookeeper 的使用場景是什麼?看你知道不知道一些基本的使用場景。但是其實 zookeeper 挖深了自然是可以問的很深很深的。

面試題剖析

大緻來說,zookeeper 的使用場景如下,我就舉幾個簡單的,大家能說幾個就好了:

  • 分布式協調
  • 分布式鎖
  • 中繼資料/配置資訊管理
  • HA高可用性

分布式協調

這個其實是 zookeeper 很經典的一個用法,簡單來說,就好比,你 A 系統發送個請求到 mq,然後 B 系統消息消費之後處理了。那 A 系統如何知道 B 系統的處理結果?用 zookeeper 就可以實作分布式系統之間的協調工作。A 系統發送請求之後可以在 zookeeper 上對某個節點的值注冊個監聽器,一旦 B 系統處理完了就修改 zookeeper 那個節點的值,A 系統立馬就可以收到通知,完美解決。

zookeeper 都有哪些使用場景? - 米兜Java

分布式鎖

舉個栗子。對某一個資料連續發出兩個修改操作,兩台機器同時收到了請求,但是隻能一台機器先執行完另外一個機器再執行。那麼此時就可以使用 zookeeper 分布式鎖,一個機器接收到了請求之後先擷取 zookeeper 上的一把分布式鎖,就是可以去建立一個 znode,接着執行操作;然後另外一個機器也嘗試去建立那個 znode,結果發現自己建立不了,因為被别人建立了,那隻能等着,等第一個機器執行完了自己再執行。

zookeeper 都有哪些使用場景? - 米兜Java

中繼資料/配置資訊管理

zookeeper 可以用作很多系統的配置資訊的管理,比如 kafka、storm 等等很多分布式系統都會選用 zookeeper 來做一些中繼資料、配置資訊的管理,包括 dubbo 注冊中心不也支援 zookeeper 麼?

HA高可用性

這個應該是很常見的,比如 hadoop、hdfs、yarn 等很多大資料系統,都選擇基于 zookeeper 來開發 HA 高可用機制,就是一個重要程序一般會做主備兩個,主程序挂了立馬通過 zookeeper 感覺到切換到備用程序。

zookeeper 都有哪些使用場景? - 米兜Java

本文在米兜公衆号連結:

https://mp.weixin.qq.com/s/nkKW2O-qW0AJpqxqGMQVNA

歡迎關注米兜Java,一個注在共享、交流的Java學習平台。

發表于

2019-10-02 22:22 

米兜Java 

閱讀(542) 

評論(0) 

編輯 

收藏 

舉報