我的支付寶3面 美團4面 拼多多四面,阿裏 頭條 騰訊等大廠Java筆試題目分享

隔壁的老郭 2021-09-19 05:11:43 阅读数:845

支付 多多 四面 java 分享

一、什麼是ZooKeeper

ZooKeeper是一個分布式服務協調框架,提供了分布式數據一致性的解决方案,基於ZooKeeper的數據結構,Watcher,選舉機制等特點,可以實現數據的發布/訂閱,軟負載均衡,命名服務,統一配置管理,分布式鎖,集群管理等等。

二、為什麼使用ZooKeeper

ZooKeeper能保證:

  • 更新請求順序進行。來自同一個client的更新請求按其發送順序依次執行
  • 數據更新原子性。一次數據更新要麼成功,要麼失敗
  • 全局唯一數據視圖。client無論連接到哪個server,數據視圖都是一致的
  • 實時性。在一定時間範圍內,client讀到的數據是最新的

三、數據結構

ZooKeeper的數據結構和Unix文件系統很類似,總體上可以看做是一棵樹,每一個節點稱之為一個ZNode,每一個ZNode默認能存儲1M的數據。每一個ZNode可通過唯一的路徑標識。如下圖所示:

我的支付寶3面 美團4面 拼多多四面,阿裏 頭條 騰訊等大廠Java筆試題目分享_後端

創建ZNode時,可以指定以下四種類型,包括:

  • PERSISTENT,持久性ZNode。創建後,即使客戶端與服務端斷開連接也不會删除,只有客戶端主動删除才會消失。
  • PERSISTENT_SEQUENTIAL,持久性順序編號ZNode。和持久性節點一樣不會因為斷開連接後而删除,並且ZNode的編號會自動增加。
  • EPHEMERAL,臨時性ZNode。客戶端與服務端斷開連接,該ZNode會被删除。
  • EPEMERAL_SEQUENTIAL,臨時性順序編號ZNode。和臨時性節點一樣,斷開連接會被删除,並且ZNode的編號會自動增加。

四、監聽通知機制

Watcher是基於觀察者模式實現的一種機制。如果我們需要實現當某個ZNode節點發生變化時收到通知,就可以使用Watcher監聽器。

客戶端通過設置監視點(watcher)向 ZooKeeper 注册需要接收通知的 znode,在 znode 發生變化時 ZooKeeper 就會向客戶端發送消息

這種通知機制是一次性的。一旦watcher被觸發,ZooKeeper就會從相應的存儲中删除。如果需要不斷監聽ZNode的變化,可以在收到通知後再設置新的watcher注册到ZooKeeper。

監視點的類型有很多,如監控ZNode數據變化、監控ZNode子節點變化、監控ZNode 創建或删除

五、選舉機制

ZooKeeper是一個高可用的應用框架,因為ZooKeeper是支持集群的。ZooKeeper在集群狀態下,配置文件是不會指定Master和Slave,而是在ZooKeeper服務器初始化時就在內部進行選舉,產生一臺做為Leader,多臺做為Follower,並且遵守半數可用原則。

由於遵守半數可用原則,所以5臺服務器和6臺服務器,實際上最大允許宕機數量都是3臺,所以為了節約成本,集群的服務器數量一般設置為奇數

如果在運行時,如果長時間無法和Leader保持連接的話,則會再次進行選舉,產生新的Leader,以保證服務的可用

我的支付寶3面 美團4面 拼多多四面,阿裏 頭條 騰訊等大廠Java筆試題目分享_後端_02

六、初の體驗

首先在官網下載ZooKeeper,我這裏用的是3.3.6版本。

然後解壓,複制一下/conf目錄下的zoo_sample.cfg文件,重命名為zoo.cfg。

修改zoo.cfg中dataDir的值,並創建對應的目錄:

我的支付寶3面 美團4面 拼多多四面,阿裏 頭條 騰訊等大廠Java筆試題目分享_Java_03

最後到/bin目錄下啟動,我用的是window系統,所以啟動zkServer.cmd,雙擊即可:

我的支付寶3面 美團4面 拼多多四面,阿裏 頭條 騰訊等大廠Java筆試題目分享_Java_04

啟動成功的話就可以看到這個對話框:

我的支付寶3面 美團4面 拼多多四面,阿裏 頭條 騰訊等大廠Java筆試題目分享_Java_05

可視化界面的話,我推薦使用ZooInspector,操作比較簡便

最後在出來放一波福利吧!希望可以幫助到大家!

 CodeChina開源項目:【一線大廠Java面試題解析+核心總結學習筆記+最新講解視頻】

千千萬萬要記得:多刷題!!多刷題!!

之前算法是我的硬傷,後面硬啃了好長一段時間才補回來,算法才是程序員的靈魂!!!!

篇幅有限,以下只能截圖分享部分的資源!!

(1)多線程(這裏以多線程為代錶,其實整理了一本JAVA核心架構筆記集)

我的支付寶3面 美團4面 拼多多四面,阿裏 頭條 騰訊等大廠Java筆試題目分享_程序員_06

(2)刷的算法題(還有左神的算法筆記)

我的支付寶3面 美團4面 拼多多四面,阿裏 頭條 騰訊等大廠Java筆試題目分享_後端_07

(3)面經+真題解析+對應的相關筆記(很全面)

我的支付寶3面 美團4面 拼多多四面,阿裏 頭條 騰訊等大廠Java筆試題目分享_程序員_08

(4)視頻學習(部分)

ps:當你覺得學不進或者累了的時候,視頻是個不錯的選擇

在這裏,最後只一句話:祝大家offer拿到手軟!!

版权声明:本文为[隔壁的老郭]所创,转载请带上原文链接,感谢。 https://gsmany.com/2021/09/20210919051142585Q.html