- 深入理解Kafka:核心設計與實踐原理
- 朱忠華
- 2032字
- 2019-07-09 14:50:28
前言
初識Kafka時,筆者接觸的還是0.8.1版本,Kafka發展到目前的2.0.0版本,筆者也見證了 Kafka 的蛻變,比如舊版客戶端的淘汰、新版客戶端的設計、Kafka 控制器的迭代優化、私有協議的變更、事務功能的引入等。Kafka 從昔日的新星逐漸走向成熟,再到今日的王者地位不可撼動,這期間有太多的故事可講。
剛接觸Kafka時,市面上很少有關于Kafka的書籍。在學習Kafka的過程中也經歷過很多挫敗,比如Scala這門編程語言就讓筆者在Kafka的源碼大門外卻步良久。那時候就在想,如果有一本書能夠全方位地解析Kafka該有多好啊。
隨著對Kafka的逐步了解,也漸漸地萌生了自己寫一本關于Kafka的書的想法,產生這一想法至今已超過兩年。在這期間,筆者陰差陽錯地先寫了一本關于 RabbitMQ 的書,也就是《RabbitMQ實戰指南》,此時已是2017年年末,市面上已經陸續出現了好幾本有關Kafka的書,而且此時Kafka的版本也已經升級到1.0.0。
筆者認真看過幾乎所有現存的Kafka的書籍,回想這一路學習和使用Kafka的經歷,深感這些都不是自己理想中的書籍,那么不如自己再“操刀”寫一本。本書秉承能用文字表述的就不貼源碼、能用圖形輔助的就不乏味陳述;既要讓新手能夠快速入門,也要讓老手有所收獲,從基礎概念入手,再到原理深入,讓讀者能夠由淺入深地理解Kafka。
本書依據Kafka 2.0.0版本編寫,書中所有內容都具備理論基礎并全部實踐過,書中的內容也是筆者在工作中的認知積累,希望本書能夠讓讀者有所收獲。
內容大綱
本書共12章,前后章節都有相應的聯系,基本上按照由淺入深、由表及里的層次逐層進行講解,如果讀者對其中的某些內容已經掌握,可以選擇跳過而翻閱后面的內容,不過還是建議讀者按照先后順序進行閱讀。
第1 章對Kafka 的基礎概念進行籠統的介紹,之后講解如何安裝與配置 Kafka,以及通過簡單的生產消費消息的示例讓讀者能夠快速地入門。
第2章主要是針對生產者客戶端的講解,包括生產者客戶端參數、消息的發送、序列化、分區器、攔截器、原理解析等內容。
第3章主要是針對消費者客戶端的講解,包括消費者客戶端參數、主題與分區的訂閱、反序列化、消息的消費、位移提交、再均衡、攔截器、多線程實現等內容。
第4章主要介紹主題與分區的管理,包括創建主題、修改主題、刪除主題、主題端參數配置、優先副本、分區重分配、復制限流,以及對分區數抉擇的探討等內容。
第5章主要講解日志存儲相關的內容,包括文件目錄的布局、日志格式的演變、日志清理的細節、底層存儲的原理等內容。
第6章主要對Kafka服務端的一些內部核心內容進行詳細的闡述,包括協議設計、延時操作、控制器、leader的選舉等內容。
第7章主要是對Kafka客戶端相關的原理剖析,當然其中也需要牽涉服務端的內容。這一章包括消費端分區分配策略、消費者協調器和組協調器、__consumer_offsets的剖析、事務的介紹等內容。
第8章主要對可靠性、一致性等核心原理進行陳述,本章內容最為抽象,主要包括失效副本、ISR伸縮、LEO與HW、Leader Epoch的介入、日志同步機制、可靠性分析等內容。
第9章主要是對Kafka相關應用的一些補充,包括一些重要的管理工具,還有Kafka Connect、Kafka Mirror Maker和Kafka Streams等內容。
第10章是與Kafka監控相關的內容,監控作為Kafka生態中的一個必備內容,有著相當重要的地位,通過學習本章的內容可以讓讀者對整個監控的脈絡設計和底層實現有清晰的認知。
第11章是對Kafka做一些功能性的擴展,包括過期時間、延時隊列、死信隊列、重試隊列、消息路由、消息軌跡、消息審計、消息代理等內容,最后還通過對消息中間件選型的闡述以期讓讀者對整個消息中間件領域有發散性的思考。
第 12 章主要講述的是 Kafka 與 Spark 集成的一些內容,包括 Spark 基本概念、Spark Streaming、Structured Streaming,以及它們與Kafka集成的細節等內容。
讀者討論
由于筆者水平有限,書中難免有錯誤之處。在本書出版后的任何時間,若您對本書有任何疑問都可以通過 zhuzhonghua.ideal@qq.com 發送郵件給筆者,也可以到筆者的個人博客http://blog.csdn.net/u013256816中留言,向筆者闡述您的建議和想法。書中的源碼會在本書發行之后進行整理,最后會公布在筆者的個人微信公眾號(朱小廝的博客,二維碼在封面上)中。
致謝
首先要感謝我身處的平臺,讓我有機會深入地接觸 Kafka。同時要感謝我身邊的同事,正因為有了你們的鼓勵和幫助,才讓我能夠迅速地成長,本書的問世,離不開與你們在工作中一起積累的點點滴滴。
感謝蔣曉峰同學不辭辛苦地為本書校稿,有了你的幫助才會讓本書更加完善。
感謝在我博客、微信公眾號中提問留言的朋友,感謝消息生態圈的朋友,有了你們的意見和建議才能讓本書更加完善。
感謝博文視點的編輯們,本書能夠順利、迅速地出版,多虧了你們的敬業精神和一絲不茍的工作態度。
最后還要感謝我的家人,在我占用絕大部分的業余時間進行寫作的時候,能夠給予我極大的寬容、理解和支持,讓我能夠全身心地投入寫作之中。
朱忠華
讀者服務
輕松注冊成為博文視點社區用戶(www.broadview.com.cn),掃碼直達本書頁面。
· 下載資源:本書如提供示例代碼及資源文件,均可在 下載資源 處下載。
· 提交勘誤:您對書中內容的修改意見可在 提交勘誤 處提交,若被采納,將獲贈博文視點社區積分(在您購買電子書時,積分可用來抵扣相應金額)。
· 交流互動:在頁面下方 讀者評論 處留下您的疑問或觀點,與我們和其他讀者一同學習交流。
頁面入口:http://www.broadview.com.cn/35902

- 基于粒計算模型的圖像處理
- Deploying Node.js
- 騰訊iOS測試實踐
- Python進階編程:編寫更高效、優雅的Python代碼
- OpenStack Cloud Computing Cookbook(Fourth Edition)
- Java面向對象程序開發及實戰
- TypeScript圖形渲染實戰:基于WebGL的3D架構與實現
- Java EE 8 Application Development
- Android開發:從0到1 (清華開發者書庫)
- 從零開始學C#
- Mastering Linux Security and Hardening
- Learning Node.js for .NET Developers
- Modernizing Legacy Applications in PHP
- Python一行流:像專家一樣寫代碼
- Learning iOS Penetration Testing