易燃物匯聚 YouTube 有聲書與書評
深入理解Kafka:核心設計與實踐原理 封面

深入理解Kafka:核心設計與實踐原理

朱忠華

2.4萬人在讀
28.8萬字總字數
¥69.3定價

內容簡介

本書從Kafka的基礎概念切入,循序漸進地轉入對其內部原理的剖析。本書主要闡述了Kafka中生產者客戶端、消費者客戶端、主題與分區、日誌存儲、原理解析、監控管理、應用擴展及流式計算等內容。雖然Kafka的內核使用Scala語言編寫,但本書基本以Java語言作爲主要的示例語言,方便大多數讀者的理解。雖然本書沒有明確的界定,但總體上可以劃分爲三個部分:基礎篇、原理篇和擴展篇,前4章爲基礎篇,包括基礎概念、生產者、消費者,以及主題與分區,學習完這4章的內容完全可以應對絕大多數的開發場景。第5章至第8章爲原理篇,包括對日誌存儲、協議設計、控制器、組協調器、事務、一致性、可靠性等內容的探究,學習完這4章的內容可以讓讀者對Kafka有一個深刻的認知。最後4章從應用擴展層面來做講解,可以歸類爲擴展篇,主要內容包括監控、應用工具、應用擴展(延時隊列、重試隊列、死信隊列、消息軌跡等)、與Spark的集成等,讓讀者可以對Kafka的生態有一個更加全面的認知。本

讀者書評

★★★★★

[2019年第38本] 皮皮廝大佬的kafka大作,從基礎到實踐循序漸進對其內部核心設計與原理進行了剖析,讀完讓人醍醐灌頂,力薦[強][強][強]

★★★★☆

內容很詳實,且細緻,但是總感覺組織上不是特別好,只能充當工具書,不便於理解。對比oreilly出版的kafka權威指南還是差點意思

★★★★★

比起rocketmq那本書,這個講的更透徹,設計理念、組織架構講的非常清新,是一本理解kafka甚至消息隊列的好書

★★★★★

這本書對Kafka原理講的很透徹,不僅僅在說Kafka,對理解各種消息中間件設計都很有啓發。 有點遺憾是缺少涉及關於Kafka安全機制的說明

★★★★★

粗讀一遍,內容翔實,邏輯脈絡清晰。不過限於對Kafka的使用經驗不多,感覺應該先熟練使用Kafka後再讀一遍本書。推薦指數五顆星!

★★☆☆☆

可以看作者是去實踐了,但是像是在翻譯實踐一樣,照着()一步一步實踐羅列堆疊終於堆疊了1000頁的一本書,用了我好幾天看完,我也是夠耐心了。

★★★★☆

這本關於Kafka的書寫得非常詳盡,很多底層細節和原理都分析得很透徹,對比市面上不同產品的技術方案,總結出各種實現的優缺點,做到觸類旁通,對於一些可能在業務場景中需要但是Kafka本身沒有的功能,作者都提出了相應的解決方案。 producer:生產者,生成消息。 consumer:消費者,消費消息。 broker:存儲和管理消息的節點。 topic:主題,消息的一級分類。 partition:分區,一個主題有多個分區,每一個分區對應一個Log日誌根目錄。 replica:副本,一個分區有多個副本,每一個副本對應一個Log日誌分段。每一個分區有一個leader副本,有多個follower副本,讀寫發生在leader副本,follower只作備份。爲了負載均衡,不同分區的leader副本會盡可能地分佈在不同的broker上。 Kafka集成了zookeeper作爲協調服務,易於動態擴展,批量發送、順序讀寫、零拷貝、頁緩存等技術,使他具備高吞吐量的特性,消息存儲在磁盤上實現持久性,消息傳輸重試和確認機制、冪等和事務、分區多副本確保了可靠性,時間輪與delayQueue結合,在大量分佈式定時任務的條件下,保證了精確性同時,又保證了性能。 Kafka生產者發送消息 指定要發送的Topic,還可以指定Key。 Key是用來指定消息的鍵,它不僅是消息的附加信息,還可以用來計算分區號進而可以讓消息發往特定的分區。前面提及消息以主題爲單位進行歸類,而這個key可以讓消息再進行二次歸類,同一個key的消息會被劃分到同一個分區中。 Kafka的消費者與消費組 一個消費者可以訂閱一個或多個主題。 每個消費者都有一個對應的消費組。當消息發佈到主題後,只會被投遞給訂閱它的每個消費組中的一個消費者。 假設目前某消費組內只有一個消費者 C0,訂閱了一個主題,這個主題包含 7 個分區:P0、P1、P2、P3、P4、P5、P6。也就是說,這個消費者C0訂閱了7個分區。 此時消費組內又加入了一個新的消費者C1,按照既定的邏輯,需要將原來消費者C0的部分分區分配給消費者C1消費。消費者C0和C1各自負責消費所分配到的分區,彼此之間並無邏輯上的干擾。 緊接着消費組內又加入了一個新的消費者C2,消費者C0、C1和C2各自負責消費所分配到的分區。 消費者與消費組這種模型可以讓整體的消費能力具備橫向伸縮性,我們可以增加(或減少)消費者的個數來提高(或降低)整體的消費能力。對於分區數固定的情況,一味地增加消費者並不會讓消費能力一直得到提升,如果消費者過多,出現了消費者的個數大於分區個數的情況,就會有消費者分配不到任何分區。 Kafka的冪等性 Producer在生產發送消息時,難免會重複發送消息。Producer進行retry時會產生重試機制,發生消息重複發送。而引入冪等性後,重複發送只會生成一條有效的消息。 Kafka的事務 Kafka中的事務是指一系列的Producer生產消息和消費消息提交Offsets的操作在一個事務中,即原子性操作。對應的結果是同時成功或者同時失敗。 需要與數據庫中事務進行區別,操作數據庫中的事務指一系列的增刪查改,對Kafka來說,操作事務是指一系列的生產和消費等原子性操作。

★★★★★

本文介紹了 Kafka 是一個分佈式、分區的、多副本的、多生產者、多訂閱者的分佈式消息系統。 1. Kafka 2.8.0 之前是使用 ZooKeeper 存儲着 Partition 和 Broker 的元數據 ,同時也負責 Kafka Controller 的選舉工作。 Kafka 2.8.0 版本實現了 Raft 分佈式一致性機制,意味着可以脫離 ZooKeeper 2. Kafka 主要設計目標 2.1 以時間複雜度爲O(1)的方式提供消息持久化能力,即使對TB級以上數據也能保證常數時間的訪問性能。 2.2 高吞吐率。即使在非常廉價的商用機器上也能做到單機支持每秒100K條消息的傳輸。 2.3 支持Kafka Server間的消息分區,及分佈式消費,同時保證每個partition傳輸。 2.3 同時支持離線數據處理和實時數據處理 2.4 支持在線水平擴展 3. 詳細介紹了 Producer、Consumer、Broker、Topic、Partition、Replicas、Offset、AR(ISR+OSR)、HW、LEO、LSO等核心概念。 4、深入了客戶端的講解,包括但不限於分區分配策略、消費者協調器和組協調器、__consumer_offsets 內部主題的剖析、冪等性與事務等。 5、深入了服務端的講解,包括但不限於協議設計、時間輪、延時操作、控制器等。

★★★★★

這本書由淺入深地介紹了Kafka的概念和原理,是一本非常好的入門書籍。在本書的第一章的第一節,就說明了Kafka的基本概念,包括主題、分區、副本、ISR、HW和LEO等等,讓讀者快速建立對Kafka的全面認識。在後續的多個章節中又對這些概念一層層的展開,第四章主題和分區會談到怎麼讓分區和副本在Kafka集羣中均衡分佈,第五章日誌存儲會談到主題和分區的物理結構,第八章可靠性探究會從保障可靠性的角度把很多概念串聯起來。這本書除了介紹Kafka,也談了一些有趣的話題,比如通過磁盤存儲消息是不是一定比內存存儲消息慢?如何設計一個插入和刪除效率都爲O(1)的定時器?這些問題折射了Kafka的性能,也幫助我加深了對技術的理解。

★★☆☆☆

不知道這本書的定位是什麼,把kafka的代碼、原理了解清楚了,卻不能寫出好的書,可能我太苛刻了,但是換一種敘述方式可能會更好,原理的歸原理,實踐的歸實踐,代碼分析的歸代碼分析,這就是三本書了哇,這本書拆成三本比揉成一本更合適。

書籍信息

作者朱忠華
出版社電子工業出版社
出版時間2019-01-01
ISBN9787121359026
分類計算機-編程設計
格式EPUB
完結狀態連載中
章節數83