華為架構師親手操刀,世界五百強都在用的kafka也就那麼回事

2020-09-11 我不禿頭


有人說世界上有三個偉大的發明:火,輪子,以及 Kafka。

發展到現在,Apache Kafka 無疑是很成功的,Confluent 公司曾表示世界五百強中有三分之一的企業在使用 Kafka。實時備份機制讓它在推薦、廣告等網際網路場景中遊刃有餘,但是實際生產中還有很多不允許丟數據的場景存在。針對這類場景是否有新的技術和框架出現?

答案就是:kafka

kafka學習思維導圖

自2010年12月份開源以來,經過市場的廝殺和淘汰已經成為Apache的頂級子項目。它主要用於處理消費者規模網站中的所有動作流數據。動作指(網頁瀏覽、搜索和其它用戶行動所產生的數據)。

但是市場上系統學習kafka的資料真的太少了,今天分享的這份kafka資料由華為架構師親手操刀,內容涵蓋源碼到實戰,堪稱一絕,後面附自己整理的kafka由基礎到架構的面試題

Kafka源碼解析與實戰

kafka入門簡介

  • Kafka誕生的背景
  • Kafka在L inkedIn內部的應用
  • Kafka的主要設計目標
  • 為什麼使用消息系統

Kafka的架構

  • Kafka的基本組成
  • Kafka的拓撲結構
  • Kafka內部的通信協議

Broker概述

  • Broker的啟動
  • Broker內部的模塊組成

Broker的基本模塊

  • SocketServer
  • KafkaRequestHandlerPool
  • 3KafkaApis
  • KafkaHealthcheck

Broker的控制管理模塊

  • KafkaController的選舉策略
  • KafkaController的初始化
  • Topic的分區狀態轉換機制
  • Topic分區的領導者副本選舉策略
  • Topic分區的副本狀態轉換機制
  • KafkaController內部的監聽器
  • Kafka集群的負載均衡流程
  • Kafka集群的Topi刪除流程
  • KafkaController的通信模塊

Topic的管理工具

  • kafka-topics.sh
  • kaka-earsisspartions.shs.h
  • kafeprererepiecaelecion.sa

生產者

  • 設計原則
  • 示例代碼
  • 模塊組成
  • 發送模式

消費者

  • 簡單消費者
  • 高級消費者

Kafka的典型應用

  • Kafka和Storm的集成
  • Kafka和ELK的集成
  • Kafka和Hadoop的集成
  • Kafka和Spark的集成

Kafka的綜合實例

  • 安防大數據的主要應用
  • Kafka在安防整體解決方案中的角色
  • 典型業務


下面是我整理出的一些kafka面試題,不妨先看看問題,自己先嘗試回答一下,再看答案。看看自己掌握得如何了,在這裡我只會展示問題,至於答案已經和華為架構師的這份《Kafka源碼解析與實戰》一起整理成PDF文檔,大家可以轉發關注後,私信【kafka】立即回復免費領取方式

kafka面試問題解析(先自己思考,答案私信【kafka】獲取)

Kafka 基礎篇

  • 1.Kafka的用途有哪些?使用場景如何?
  • 2.Kafka中的ISR、AR又代表什麼? ISR的伸縮又指什麼
  • 3.Kafka中的HW、LEO. LSO. LW等分別代表什麼?
  • 4.Kafka中是怎麼體現消息順序性的?
  • 5.Kafka 中的分區器、序列化器、攔截器是否了解?它們之間的處理順序是什麼?
  • 6.Kafka生產者客戶端的整體結構是什麼樣子的?
  • 7.Kafka生產者客戶端中使用了幾個線程來處理?分別是什麼?
  • 8.Kafka的舊版Scala的消費者客戶端的設計有什麼缺陷?
  • 9.「消費者中的消費者個數如果超過 topic 的分區,那麼就會有消費者消費不到數據」這句話是否正確?如果正確,那麼有沒有什麼 hack 的手段?

  • 10.有哪些情形會造成重複消費?
  • 12.KafkaConsumer是非線程安全的,那麼怎麼樣實現多線程消費?
  • 14.當你使用 kafka-topics.sh 創建(刪除)了一個 topic 之後,Kafka 背後會執行什麼邏輯?
  • 15.topic 的分區數可不可以增加?如果可以怎麼增加?如果不可以,那又是為什麼?

  • 16.topic 的分區數可不可以減少?如果可以怎麼減少?如果不可以,那又是為什麼?
  • 17.創建topic時如何選擇合適的分區數?

Kakfa進階篇

  • 1.Kafka目前有哪些內部topic,它們都有什麼特徵?各自的作用又是什麼?
  • 2.優先副本是什麼?它有什麼特殊的作用?
  • 3.Kafka有哪幾處地方有分區分配的概念?簡述大致的過程及原理
  • 4.簡述Kafka的日誌目錄結構
  • 5.Kafka中有那些索引文件?
  • 6.如果我指定了一個offset,Kafka怎麼查找到對應的消息?
  • 7.如果我指定了一-個timestamp,Kafka怎麼查找到對應的消息?
  • 8.聊一聊你對Kafka的Log Retention的理解
  • 9.聊一一聊你對Kafka的Log Compaction的理解
  • 10.聊一 -聊你對Kafka底層存儲的理解
  • 11聊一聊Kafka的延時操作的原理
  • 12聊一聊Kafka控制器的作用
  • 13.Kafka的舊版Scala的消費者客戶端的設計有什麼缺陷?
  • 上14.消費再均衡的原理是什麼? (提示:消費者協調器和消費組協調器)
  • 15.Kafka中的幕等是怎麼實現的?

Kafka高級篇

  • 1.Kafka中的事務是怎麼實現的?
  • 2.失效副本是指什麼?有那些應對措施?
  • 3.多副本下,各個副本中的HW和LEO的演變過程
  • 4.Kafka在可靠性方面做了哪些改進? ( HW, LeaderEpoch )
  • 5.為什麼Kafka不支持讀寫分離?
  • 6.Kafka中的延遲隊列怎麼實現
  • 7.Kafka中怎麼實現死信隊列和重試隊列?
  • 8.Kafka中怎麼做消息審計?
  • 9.Kafka中怎麼做消息軌跡?
  • 10怎麼計算Lag ? (注意read. uncommitted和read. committed狀態..
  • 11.Kafka有哪些指標需要著重關注?
  • 12.Kafka的那些設計讓它有如此高的性能?
  • 13.零拷貝技術

最近工作中呢,頻頻用到消息中心,包括異步轉同步的功能,分布式收集日誌信息等功能,在面試中也常會問到候選人關於消息中心的知識點,但大多數程式設計師,尤其是工作兩三年的,雖然平時工作中都有用到消息中心,但都總是不能夠說明白其中的原理,覺得有必要把消息中心作為一個主題,於是有了今天的這一篇分享

文中提及的《Kafka源碼解析與實戰pdf》、《Kafka面試問題解析(基礎+進階+高階)》、《kafka知識導圖筆記》均是免費分享的,需要用以學習的朋友們,幫忙轉發關注後私信【kafka】立即獲取免費下載方式

相關焦點

  • 阿里架構師直通車:Netty+NIO+Redis+Kafka共計13.62G,一鍵入職
    前言在2020年,Java仍然是世界上最流行的程式語言之一。它擁有一個巨大的生態系統,在全世界有超過1000萬Java開發人員。Java框架允許您關注應用程式的業務邏輯,而不是編寫資料庫連接或處理異常等基本功能。此外,如果您有Java方面的經驗,您可以快速入門。這些框架都使用相同的語法,使用相似的術語、範例和概念。
  • 15年架構師:再有面試官問你Kafka,就拿這篇學習筆記懟他
    kafka的外在表現很像消息系統,允許發布和訂閱消息流,但是它和傳統的消息系統有很大的差異:首先,kafka是個現代分布式系統,以集群的方式運行,可以自由伸縮其次,kafka可以按照要求存儲數據,保存多久都可以第三,流式處理將數據處理的層次提示到了新高度,消息系統只會傳遞數據。
  • 想做架構師都要學什麼?這些知識你一定要知道(上篇)
    特別是對於3~5年經驗的同學,一般公司都會要求有一定積累,同時對項目有初步的架構能力。很多同學覺得做技術管理不適合自己,想往架構師、技術專家的方向發展,卻苦於不知道學習什麼。本文精心整理了作為架構師應該了解的一些技術和框架。希望對各位讀者有所幫助。本篇涵蓋10+個方面,分為上中下三篇。
  • 快速入門kafka之 kafka優點及技術架構
    ** 性能高**:對於發布和定位消息都具有高吞吐量,保證零停機和零數據丟失Kafka應用場景** 指標分析:用於操作監控數據,分析各種指標。** 日誌收集:收集各個業務的數據發送到kafka TOPIC裡** 流式處理**:數據實時打入kafka,實時計算框架(sparkstreaming flink)實時在kafka中消費數據Kafka技術架構(宏觀)
  • AI創新時代來臨,華為能否成為未來人工智慧世界的架構師?
    寫在前面‍華為作為我國數一數二的高科技企業,在未來的人工智慧領域能成為領導者嗎?事實上,要看人工智慧世界的架構師都應該有什麼特徵。一個決定人類智能社會走向的架構師,是胸懷世界的,因為這關乎全球智人的民生,關乎全球商業的繁榮,關乎全球商業生態的和諧。想像一下,10年後,AI無處不在,就像AI+自己融合成的新智能體一樣。
  • 架構思維其實就那麼回事
    沒錯,架構不像我們平時的coding工作,這是一個宏觀層面的事情。而對我們內心來說,越宏觀、越大的東西,我們總會覺得更不容易控制,所以會心生敬畏。但實際上,架構的「世界」在複雜度上可能還不如coding上的細枝末節那麼大。
  • kafka架構以及應用場景
    什麼是kafkaApache Kafka是一個分布式發布,訂閱消息系統,並且也是一個強大的隊列,可以處理高並的數據,並使您能夠將消息從一個端點傳遞到另一個端點。Kafka非常適合處理離線和在線消息消費。 Kafka消息可以持久化的保留在磁碟上,並在群集內複製以防止數據丟失。
  • 架構師的選擇,Pulsar還是Kafka?
    ".format(input)用Python編寫的這個簡單函數只是向所有傳入的字符串添加一個感嘆號,並將結果字符串發布到主題。· 更快:許多基準測試在各種情況下都表現出更好的性能。 Pulsar聲稱具有較低的延遲和更好的擴展功能。 但是,這正受到Confluent的挑戰,因此,請帶著鹽味做,並自己制定基準。· Pulsar Functions將無伺服器計算帶到您的消息傳遞平臺。· 集成架構註冊表支持輕鬆的架構演變· 集成的負載平衡器和Prometheus指標。
  • 大白話+13張圖解 Kafka
    本文轉載自【微信公眾號:java進階架構師,ID:java_jiagoushi】經微信公眾號授權轉載,如需轉載與原文作者聯繫前言應大部分的小夥伴的要求,在Yarn之前先來一個kafka的小插曲,輕鬆愉快。
  • 在邊緣處部署Kafka的用例與架構
    Kafka在邊緣的類別和體系架構大多數物聯網項目的構建,都與在數據中心或雲端的普通Kafka項目有著本質的區別。混合架構—從邊緣到雲端設想,一列火車正在邊緣處對產生的信息進行局部處理。如果有網際網路連接和免費的網絡資源,那麼這列火車會將相關的數據實時複製到雲端。而如果火車在行進中失去網絡連接,那麼Kafka將處理背壓,並在網絡連接恢復時將數據複製到雲端。
  • 為什麼很多程式設計師沒有升級到架構師?
    這個階段依然屬於「見習」,但至少能從實踐角度,掌握架構師所需的技能。對比自己通過看視頻,以閉門造車的方式積累架構師的技能,通過上述步驟得到的相關經驗來源於實際,無疑值錢得多。 6 必要時,得通過跳槽,爭取架構師的實踐機會 其實在小公司甚至是外包公司裡,都有機會了解甚至實踐上文提到的架構師相關技能。
  • Kafka支持的分布式架構超越經典軟體設計的五個原因
    直到2000年代初期,它們中的絕大多數都是大型機驅動的機構。直到2006年像Amazon Web Services這樣的公司成立時,這種情況才發生了巨大變化。 從那時起,大多數銀行,政府機構,航空旅行公司以及許多其他公司都希望駕馭這一波雲計算浪潮。 沒有公司會想念這艘現代軟體架構的船。當涉及到當今我們擁有的不同雲架構時,異步架構將成為傳統軟體設計的未來替代品之一。
  • Kafka架構原理,也就這麼回事!
    本文主要講解 Kafka 是什麼、Kafka 的架構包括工作流程和存儲機制,以及生產者和消費者。Replica:副本,為實現備份的功能,保證集群中的某個節點發生故障時,該節點上的 Partition 數據不丟失,且 Kafka 仍然能夠繼續工作,Kafka 提供了副本機制,一個 Topic 的每個分區都有若干個副本,一個 Leader 和若干個 Follower。Leader:每個分區多個副本的「主」副本,生產者發送數據的對象,以及消費者消費數據的對象,都是 Leader。
  • 世界五百強名單新鮮出爐!為何京東能排在位列網際網路公司第一?
    ,為什麼排在世界五百強名單前列的卻是京東?時代華納旗下的《財富》雜誌是業界公認的權威,其發布的世界五百強榜單也是全球公認的最為權威的企業排行榜,而之所以京東的排名如此之高是因為《財富》世界五百強榜單是根據企業的營收來排名的,而我們大多數人習慣用市值來衡量一家企業。儘管從去年年底到現在,京東的股價一路暴漲,目前市值已經突破1000億美元大關,但是距離阿里和騰訊仍有距離,不過在營收上京絕對是毫無疑問的王者。
  • 生產環境使用Apache Kafka和Redis的流架構
    它適用於近實時系統,在該系統中,需要處理大量事件流,並將結果提交給大量的訂戶,每個訂戶都接收自己的流視圖。流化莊家賠率-不同用戶瀏覽網站的不同部分,其投注單可增加不同的市場實時遊戲-根據玩家的輸入和遊戲規則,為每個玩家計算一個不同的世界視圖
  • 阿里愛問Kafka?阿里P9整理出Kafka寶典,太真實了
    這裡列出了一些大廠面試官高頻的問題:為什麼要用 Kafka 集群?kafka 如何不消費重複數據?Offeset 極限是多少?過了極限又是多少?如何實現 exactly once?不用 zk,怎麼管理集群元數據信息?
  • 世界五百強名單新鮮出爐!為何京東能排在位列網際網路公司第一?
    今天,著名財經雜誌《財富》發布了2020年度的全球五百強企業名單,繼去年京東排名大幅躍進42位之後,今年再次取得新的突破,排名上升37位,位居第102名,遠超阿里、騰訊等巨頭,位居中國零售及網際網路行業第一、全球網際網路行業第三然而這份榜單發布之後有不少網友表示,在自己的認知裡,阿里和騰訊體量都要比京東大,為什麼排在世界五百強名單前列的卻是京東?
  • 人人都是架構師:架構是一種能力,不是頭銜
    架構是一種能力,它不是頭銜。 換句話說,我們需要具備架構能力,但不一定要成為架構師。就像鄧公,他被稱為改革開放的總設計師,但他不是設計師。既然這樣,那我們還需要架構師嗎?還需要架構部門嗎?我給出的答案是:不需要,因為每個人都應該是架構師。
  • 架構老炮兒:談談 80% 的人關於架構師的誤解
    最近,我看到一個群裡關於架構師的討論:「架構師很『高大上』啊,平常畫畫架構圖,對我等程式設計師指指點點不就可以了。」「感覺我們公司架構師沒啥用啊,可有可無吧。」「我們都一樣,都是接到需求給實現嘛。」確實,業界對於架構師一直存在一些誤解,像上面的這種觀點不在少數。
  • 阿里P8+華為18級架構師熬夜硬肝413頁Java架構指南
    那麼,如何提高軟體工程師的開發技能就成了一個無法迴避的問題。誠然,提高開發人員的技能水平,但從更普遍、更直接的意義上來說,提高技能水平的最佳方式還是系統地閱讀相關書籍。小編在這裡分享一份阿里、華為等知名企業工程師聯袂推薦Java架構師指南進階書籍。