天天看點

五分鐘搞懂MySQL主從複制原理,講的明明白白!那麼,如何學習Kafka源碼??一、什麼是ZooKeeper二、為什麼使用ZooKeeper三、資料結構四、監聽通知機制五、選舉機制六、初の體驗技術學習總結最後面試分享

Kafka是一個高度可擴充的消息系統,它在LinkedIn的中央資料庫管理中扮演着十分重要的角色,因其可水準擴充和高吞吐率而被廣泛使用,現在已經被多家不同類型的公司作為多種類型的資料管道和消息系統。

那麼,如何學習Kafka源碼??

我覺得最高效的方式就是去讀最核心的源碼,先看一張 Kafka結構圖 以及 Kafka 源碼全景圖

五分鐘搞懂MySQL主從複制原理,講的明明白白!那麼,如何學習Kafka源碼??一、什麼是ZooKeeper二、為什麼使用ZooKeeper三、資料結構四、監聽通知機制五、選舉機制六、初の體驗技術學習總結最後面試分享

一、什麼是ZooKeeper

ZooKeeper是一個分布式服務協調架構,提供了分布式資料一緻性的解決方案,基于ZooKeeper的資料結構,Watcher,選舉機制等特點,可以實作資料的釋出/訂閱,軟負載均衡,命名服務,統一配置管理,分布式鎖,叢集管理等等。

二、為什麼使用ZooKeeper

ZooKeeper能保證:

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

三、資料結構

ZooKeeper的資料結構和Unix檔案系統很類似,總體上可以看做是一棵樹,每一個節點稱之為一個ZNode,每一個ZNode預設能存儲1M的資料。每一個ZNode可通過唯一的路徑辨別。如下圖所示:

五分鐘搞懂MySQL主從複制原理,講的明明白白!那麼,如何學習Kafka源碼??一、什麼是ZooKeeper二、為什麼使用ZooKeeper三、資料結構四、監聽通知機制五、選舉機制六、初の體驗技術學習總結最後面試分享

建立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,以保證服務的可用。

五分鐘搞懂MySQL主從複制原理,講的明明白白!那麼,如何學習Kafka源碼??一、什麼是ZooKeeper二、為什麼使用ZooKeeper三、資料結構四、監聽通知機制五、選舉機制六、初の體驗技術學習總結最後面試分享

六、初の體驗

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

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

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

五分鐘搞懂MySQL主從複制原理,講的明明白白!那麼,如何學習Kafka源碼??一、什麼是ZooKeeper二、為什麼使用ZooKeeper三、資料結構四、監聽通知機制五、選舉機制六、初の體驗技術學習總結最後面試分享

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

五分鐘搞懂MySQL主從複制原理,講的明明白白!那麼,如何學習Kafka源碼??一、什麼是ZooKeeper二、為什麼使用ZooKeeper三、資料結構四、監聽通知機制五、選舉機制六、初の體驗技術學習總結最後面試分享

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

五分鐘搞懂MySQL主從複制原理,講的明明白白!那麼,如何學習Kafka源碼??一、什麼是ZooKeeper二、為什麼使用ZooKeeper三、資料結構四、監聽通知機制五、選舉機制六、初の體驗技術學習總結最後面試分享

可視化界面的話,我推薦使用

ZooInspector

,操作比較簡便

技術學習總結

學習技術一定要制定一個明确的學習路線,這樣才能高效的學習,不必要做無效功,既浪費時間又得不到什麼效率,大家不妨按照我這份路線來學習。

五分鐘搞懂MySQL主從複制原理,講的明明白白!那麼,如何學習Kafka源碼??一、什麼是ZooKeeper二、為什麼使用ZooKeeper三、資料結構四、監聽通知機制五、選舉機制六、初の體驗技術學習總結最後面試分享
五分鐘搞懂MySQL主從複制原理,講的明明白白!那麼,如何學習Kafka源碼??一、什麼是ZooKeeper二、為什麼使用ZooKeeper三、資料結構四、監聽通知機制五、選舉機制六、初の體驗技術學習總結最後面試分享
五分鐘搞懂MySQL主從複制原理,講的明明白白!那麼,如何學習Kafka源碼??一、什麼是ZooKeeper二、為什麼使用ZooKeeper三、資料結構四、監聽通知機制五、選舉機制六、初の體驗技術學習總結最後面試分享

最後面試分享

大家不妨直接在牛客和力扣上多刷題,同時,我也拿了一些面試題跟大家分享,也是從一些大佬那裡獲得的,大家不妨多刷刷題,為金九銀十沖一波!

五分鐘搞懂MySQL主從複制原理,講的明明白白!那麼,如何學習Kafka源碼??一、什麼是ZooKeeper二、為什麼使用ZooKeeper三、資料結構四、監聽通知機制五、選舉機制六、初の體驗技術學習總結最後面試分享
五分鐘搞懂MySQL主從複制原理,講的明明白白!那麼,如何學習Kafka源碼??一、什麼是ZooKeeper二、為什麼使用ZooKeeper三、資料結構四、監聽通知機制五、選舉機制六、初の體驗技術學習總結最後面試分享

金九銀十沖一波!

[外鍊圖檔轉存中…(img-n9SpQatY-1624605076648)]

[外鍊圖檔轉存中…(img-SLX0PPSy-1624605076649)]

最後,若需要完整pdf版,可以點贊本文後點選這裡免費領取

繼續閱讀