Kafka核心技術與實戰-胡夕-極客時間

wuwu發表於2019-06-05

極客時間出品的《Kafka核心技術與實戰》由胡夕所作,胡夕是人人貸計算平臺部總監,Apache Kafka Contributor。本專欄全面提升你的Kafka實戰能力。

Kafka核心技術與實戰 封面圖

訂閱價格:

用我的邀請購買,還會額外返現12元。購買連結:http://gk.link/a/103Gs也可以掃描頁面最下方海報圖中的二維碼購買。

購買的朋友請加我微訊號 dismissmewp ,備註:返現。

已有3711 人已學習 · 共42講 · 每週二 / 四 / 六更新,原價¥99限時¥68 本課程為圖文+音訊課程。可在極客時間APP/小程式/網站上永久觀看。

Kafka是LinkedIn開發並開源的一套分散式的高效能訊息引擎服務,後來被越來越多的公司應用在自己的系統中,可以說,Kafka是大資料時代資料管道技術的首選。在設計的時候,它就實現了高可靠、高吞吐、高可用和可伸縮,得益於這些特性,加上活躍的社群,Kafka成為了一個完備的分散式訊息引擎解決方案。

歷經多年發展,Kafka的功能和特性也在不斷迭代,如今的Kafka集訊息系統、儲存系統和流式處理平臺於一身,並作為連線著各種業務前臺和資料後臺的訊息中介軟體,線上上環境承擔了非常重要的作用。

但在Kafka的實際使用過程中,幾乎所有人都或多或少會遇到一些問題,比如:

棘手的線上問題難於定位和解決,怎麼辦?

在Kafka版本的演進過程中,各種新功能層出不窮,導致各種相容性問題接踵而至,怎麼辦?

當叢集規模擴充套件到一定程度後,所追求的高效能與有限的資源之間的矛盾又變得日益尖銳起來,怎麼辦?

如何順利填補這些“坑”,是擺在每個Kafka學習者面前最亟待解決的問題。

《Kafka核心技術與實戰》作者介紹

胡夕,目前就職於人人貸,任計算平臺部總監,是Apache Kafka社群活躍的程式碼貢獻者,著有《Apache Kafka實戰》一書,曾任職於IBM、搜狗和新浪微博等公司。胡夕對Kafka及其他開源流處理框架與技術有深刻理解,精通Kafka原理,主導過多個十億級\/天的訊息引擎業務系統的設計與搭建,具有豐富的線上環境定位和診斷調優經驗,曾給多家大型公司提供企業級Kafka培訓。

你好,我是胡夕,Apache Kafka 的一名程式碼貢獻者,目前在社群的 Patch 提交總數位列第 22 位,應該說算是國內比較活躍的貢獻者了。

在過去 5 年中,我經歷了 Kafka 從最初的 0.8 版本逐步演進到現在的 2.3 版本的完整過程,踩了很多坑也交了很多學費,慢慢地我梳理出了一個相對系統、完整的 Kafka 應用實戰指南,最終以“Kafka 核心技術與實戰”專欄的形式呈現給你,希望分享我對 Apache Kafka 的理解和實戰方面的經驗,幫你透徹理解 Kafka、更好地應用 Kafka。

你可能會有這樣的疑問,我為什麼要學習 Kafka 呢?要回答這個問題,我們不妨從更大的視角來審視它,先聊聊我對這幾年網際網路技術發展的理解吧。

網際網路蓬勃發展的這些年湧現出了很多令人眼花繚亂的新技術。以我個人的淺見,截止到 2019 年,當下網際網路行業最火的技術當屬 ABC 了,即所謂的 AI 人工智慧、BigData 大資料和 Cloud 雲端計算雲平臺。我個人對區塊鏈技術發展前景存疑,畢竟目前沒有看到特別好的落地應用場景,也許在未來幾年它會更令人刮目相看吧。

在這 ABC 當中,坦率說 A 和 C 是有點曲高和寡的,不是所有玩家都能入場。反觀 B 要顯得平民得多,幾乎所有公司都能參與進來。我曾經到過一個理髮廳,那裡的人都宣稱他們採用了大資料系統幫助客戶設計造型,足見 BigData 是很“下里巴人”的。

作為工程師或架構師,你在實際工作過程中一定參與到了很多大資料業務系統的構建。由於這些系統都是為公司業務服務的,所以通常來說它們僅僅是執行一些常規的業務邏輯,因此它們不能算是計算密集型應用,相反更應該是資料密集型的。

對於資料密集型應用來說,如何應對資料量激增、資料複雜度增加以及資料變化速率變快,是彰顯大資料工程師、架構師功力的最有效表徵。我們欣喜地發現 Kafka 在幫助你應對這些問題方面能起到非常好的效果。就拿資料量激增來說,Kafka 能夠有效隔離上下游業務,將上游突增的流量快取起來,以平滑的方式傳導到下游子系統中,避免了流量的不規則衝擊。由此可見,如果你是一名大資料從業人員,熟練掌握 Kafka 是非常必要的一項技能。

剛剛所舉的例子僅僅是 Kafka 助力業務的一個場景罷了。事實上,Kafka 有著非常廣闊的應用場景。不謙虛地說,目前 Apache Kafka 被認為是整個訊息引擎領域的執牛耳者,僅憑這一點就值得我們好好學習一下它。另外,從學習技術的角度而言,Kafka 也是很有亮點的。我們僅需要學習一套框架就能在實際業務系統中實現訊息引擎應用、應用程式整合、分散式儲存構建,甚至是流處理應用的開發與部署,聽起來還是很超值的吧。

不僅如此,再給你看一個資料。援引美國 2019 年 Dice 技術薪資報告中的資料,在 10 大薪資最高的技術技能中,掌握 Kafka 以平均每年 12.8 萬美元排名第二!排名第一位的是 13.2 萬美元 / 年的 Go 語言。好吧,希望你看到這個之後不會立即關閉我的專欄然後轉頭直奔隔壁的 Go 語言專欄。雖然這是美國人才市場的資料,但是我們有理由相信在國內 Kafka 的行情也是水漲船高。2019 年兩會上再一次提到了要深化大資料、人工智慧等研發應用,而 Kafka 無論是作為訊息引擎還是實時流處理平臺,都能在大資料工程領域發揮重要的作用。

總之 Kafka 是個利器,值得一試!既然知道了為什麼要學 Kafka,那我們就要行動起來,把它學透,而學透 Kafka 有什麼路徑嗎?

一旦確定了要使用的客戶端,馬上去官網上學習一下程式碼示例,如果能夠正確編譯和執行這些樣例,你就能輕鬆地駕馭客戶端了。

下一步你可以嘗試修改樣例程式碼嘗試去理解並使用其他的 API,之後觀測你修改的結果。如果這些都沒有難倒你,你可以自己編寫一個小型專案來驗證下學習成果,然後就是改善和提升客戶端的可靠性和效能了。到了這一步,你可以熟讀一遍 Kafka 官網文件,確保你理解了那些可能影響可靠性和效能的引數。

最後是學習 Kafka 的高階功能,比如流處理應用開發。流處理 API 不僅能夠生產和消費訊息,還能執行高階的流式處理操作,比如時間視窗聚合、流處理連線等。

如果你是系統管理員或運維工程師,那麼相應的學習目標應該是學習搭建及管理 Kafka 線上環境。如何根據實際業務需求評估、搭建生產線上環境將是你主要的學習目標。另外對生產環境的監控也是重中之重的工作,Kafka 提供了超多的 JMX 監控指標,你可以選擇任意你熟知的框架進行監控。有了監控資料,作為系統運維管理員的你,勢必要觀測真實業務負載下的 Kafka 叢集表現。之後如何利用已有的監控指標來找出系統瓶頸,然後提升整個系統的吞吐量,這也是最能體現你工作價值的地方。

在明確了自己要學什麼以及怎麼學之後,你現在會不會有一種感慨:原來我要學習這麼多東西呀!不用擔心,剛剛我提到的所有內容都會在專欄中被覆蓋到。

Kafka核心技術與實戰 作者 胡夕

《Kafka核心技術與實戰》專欄介紹

專欄分為六部分,共42講

第一部分,Kafka入門。作為正式學習前的熱身,將介紹訊息引擎這類系統的原理和用途,以及作為優秀的訊息引擎代表,Kafka是如何“脫穎而出”的。

第二部分,Kafka的基本使用。將重點探討Kafka如何用於生產環境,特別是線上環境的方案該如何制定。

第三部分,客戶端實踐及原理剖析。將帶你學習Kafka客戶端的方方面面,既有生產者的實操講解,也有消費者的原理剖析,是專欄的重點內容。

第四部分,深入Kafka核心。將著重介紹Kafka最核心的設計原理,包括Controller的設計機制、請求處理的全流程等。

第五部分,管理與監控。這部分涵蓋Kafka運維與監控的內容,將討論如何高效運維Kafka叢集,並分享有效監控Kafka的實戰經驗。

第六部分,高階Kafka應用之流處理。最後這一部分將會介紹Kafka流處理元件Kafka Streams的實戰應用,並帶你從頭開發一個demo專案。

《Kafka核心技術與實戰》課程目錄

開篇詞I為什麼要學習Kafka?

Kafka入門

  1. 訊息引擎系統ABC
  2. —篇文章帯你快速搞定Kafka術語
  3. ApacheKafka真的只是訊息引擎系統嗎?
  4. 我應該如何選擇Kafka版本?
  5. 聊聊Kafka的版本號

Kafka的基本使用

  1.  Kafka線上叢集部署方案怎麼做?
  2. 最最最重要的叢集引數配置(上)
  3. 最最最重要的叢集引數配置(下)

客戶端實踐及原理剖析

  1. 生產者訊息分割槽機制原理剖析
  2. 生產者壓縮演算法面面觀
  3. 無訊息丟失配置怎麼實現?
  4. 客戶端都有哪些不常見但是很高階的功能?
  5. Java生產者是如何管理TCP連線的?
  6. 冪等生產者和事務生產者是一回事嗎?
  7. 消費者組到底是什麼?
  8. 揭開神祕的“位移主題”面紗
  9. 消費者組重平衡能避免嗎?
  10. Kafka中位移提交那些事兒
  11. CommitFailedException 異常怎麼處理?
  12. 多執行緒開發消費者例項
  13. Java消費者是如何管理TCP連線的?
  14. 消費者組消費進度監控都怎麼實現?

深入Kafka核心

  1. Kafka備份機制詳解
  2. 請求是怎麼被處理的?
  3. 消費者組重平衡全流程解析
  4. 你一定不能錯過的Kafka控制器
  5. 關於高水位和Leader Epoch的討論

管理與監控

  1. 主題管理知多少?
  2. Kafka動態配置瞭解下?
  3. 怎麼重設消費者組位移?
  4. 常見工具指令碼大彙總
  5. KafkaAdminClient: Kafka的運維利器
  6. Kafka認證機制用哪家?
  7. 雲環境下的授權該怎麼做?
  8. 跨叢集備份解決方案MirrorMaker
  9. 你應該怎麼監控Kafka?
  10. 主流監控框架你知道多少?
  11. 調優Kafka你做到了嗎?
  12. 從0搭建基於Kafka的企業級實時日誌流處理平臺

高階Kafka應用之流處理

  1. Kafka Streams與其他流處理平臺的差異在哪?
  2. Kafka Streams DSL 開發例項
  3. Kafka Streams在金融領域的應用

猿人學banner宣傳圖

我的公眾號:猿人學 Python 上會分享更多心得體會,敬請關注。

***版權申明:若沒有特殊說明,文章皆是猿人學 yuanrenxue.com 原創,沒有猿人學授權,請勿以任何形式轉載。***

相關文章