發表於2024-12-18
Kafka是一種高吞吐量的分布式發布訂閱消息係統,,本書以Kafka 0.10.0版本源碼為基礎,深入剖析瞭Kafka的各個模塊的實現,包括Kafka的生産者客戶端、消費者客戶端、服務端的各個模塊以及常用的管理腳本。作者對Kafka設計的理解和經驗分享也穿插在瞭剖析源碼的過程中,可以幫助讀者學習Kafka中優秀的設計思想以及Java和Scala的編程技巧和規範。
本書以 Kafka 0.10.0 版本源碼為基礎,針對 Kafka的架構設計到實現細節進行詳細闡述。本書共5 章,從 Kafka 的應用場景、源碼環境搭建開始逐步深入,對 Kafka 的核心概念進行分析介紹,對 Kafka 生産者、消費者、服務端的源碼進行深入的剖析,最後介紹 Kafka 常用的管理腳本實現,讓讀者不僅從宏觀設計上瞭解 Kafka,而且能夠深入到 Kafka 的細節設計之中。在源碼分析的過程中,還穿插瞭筆者工作積纍的經驗分析和對 Kafka 設計的理解,希望能夠讓讀者可以舉一反三,不僅知其然,而且知其所以然。 本書旨在為讀者閱讀 Kafka 源碼提供幫助和指導,讓讀者更加深入地瞭解 Kafka 的運行原理、設計理念,讓讀者在設計分布式係統時可以參考 Kafka 的優秀設計。本書的內容對於讀者全麵提升自己的技術能力有很大幫助。
徐郡明,武漢大學碩士,目前就職於航天科技集團旗下某研究所,主要負責政企雲平颱基礎架構的設計和研發工作,有多年Kafka應用和設計經驗。長期關注大數據處理相關技術以及Kafka的發展。
《Apache Kafka源碼剖析》一書深入淺齣地分析瞭Kafka的源代碼,無論是剛接觸Kafka的菜鳥,還是已經有多年Kafka使用經驗的老鳥,這本書都能讓你有所收獲。
——搜狗高級研發工程師 張亞森
Kafka是大數據平颱中的關鍵部分之一。《Apache Kafka源碼剖析》全麵細緻地剖析瞭Kafka的運行原理和架構設計,在帶領讀者進入Kafka源碼世界的同時,也分析瞭許多設計經驗,是一本不可多得的好書。
——華為高級研發工程師 張占龍
在閱讀《Apache Kafka源碼剖析》時,作者在每一章節中都會給我意外之驚喜。作者對Kafka源代碼已有相當深刻的理解,此書代碼分析過程邏輯清晰,詳略得當,實屬不易。
——網易遊戲高級數據挖掘研究員 楊威
大型分布式係統猶如一個生命,係統中各個服務猶如骨骼,其中的數據猶如血液,而Kafka猶如經絡,串聯整個係統。《Apache Kafka源碼剖析》通過大量的設計圖展示、代碼分析、示例分享,把Kafka的實現脈絡展示在讀者麵前,幫助讀者更好地研讀Kafka代碼。
——今日頭條高級研發工程師 劉剋剛
《Apache Kafka源碼剖析》中匯集瞭作者多年Kafka開發經驗,為讀者深入學習Kafka實現指明瞭方嚮。對於想學習Kafka的程序員來說,這是一本非常不錯的進階書籍。
——美團高級研發工程師 劉思
目?錄
第1章 快速入門
1.1 Kafka簡介
1.2 以Kafka為中心的解決方案
1.3 Kafka核心概念
1.4 搭建Kafka源碼環境
本章小結
第2章 生産者
2.1 KafkaProducer使用示例
2.2 KafkaProducer分析
2.2.1 ProducerInterceptors&ProducerInterceptor
2.2.2 Kafka集群元數據
2.2.3 Serializer&Deserializer
2.2.4 Partitioner
2.3 RecordAccumulator分析
2.3.1 MemoryRecords
2.3.2 RecordBatch
2.3.3 BufferPool
2.3.4 RecordAccumulator
2.4 Sender分析
2.4.1 創建請求
2.4.2 KSelector
2.4.3 InFlightRequests
2.4.4 MetadataUpdater
2.4.5 NetworkClient
本章小結
第3章 消費者
3.1 KafkaConsumer使用示例
3.2 傳遞保證語義(Delivery guarantee semantic)
3.3 Consumer Group Rebalance設計
3.4 KafkaConsumer分析
3.4.1 ConsumerNetworkClient
3.4.2 SubscriptionState
3.4.3 ConsumerCoordinator
3.4.4 PartitionAssignor分析
3.4.5 Heartbeat分析
3.4.6 Rebalance實現
3.4.7 offset操作
3.4.8 Fetcher
3.4.9 KafkaConsumer分析總結
本章小結
第4章 Kafka服務端
4.1 網絡層
4.1.1 Reactor模式
4.1.2 SocketServer
4.1.3 AbstractServerThread
4.1.4 Acceptor
4.1.5 Processor
4.1.6 RequestChannel
4.2 API層
4.2.1 KafkaRequestHandler
4.2.2 KafkaApis
4.3 日誌存儲
4.3.1 基本概念
4.3.2 FileMessageSet
4.3.3 ByteBufferMessageSet
4.3.4 OffsetIndex
4.3.5 LogSegment
4.3.6 Log
4.3.7 LogManager
4.4 DelayedOperationPurgatory組件
4.4.1 TimingWheel
4.4.2 SystemTimer
4.4.3 DelayedOperation
4.4.4 DelayedOperationPurgatory
4.4.5 DelayedProduce
4.4.6 DelayedFetch
4.5 副本機製
4.5.1 副本
4.5.2 分區
4.5.3 ReplicaManager
4.6 KafkaController
4.6.1 ControllerChannelManager
4.6.2 ControllerContext
4.6.3 ControllerBrokerRequestBatch
4.6.4 PartitionStateMachine
4.6.5 PartitionLeaderSelector
4.6.6 ReplicaStateMachine
4.6.7 ZooKeeper Listener
4.6.8 KafkaController初始化與故障轉移
4.6.9 處理ControlledShutdownRequest
4.7 GroupCoordinator
4.7.1 GroupMetadataManager
4.7.2 GroupCoordinator分析
4.8 身份認證與權限控製
4.8.1 配置SASL/PLAIN認證
4.8.2 身份認證
4.8.3 權限控製
4.9 Kafka監控
4.9.1 JMX簡介
4.9.2 Metrics簡介
4.9.3 Kafka中的Metrics
4.9.4 Kafka的監控功能
4.9.5 監控KSelector的指標
第5章 Kafka Tool
5.1 kafka-server-start腳本
5.2 kafka-topics腳本
5.2.1 創建Topic
5.2.2 修改Topic
5.3 kafka-preferred-replica-election腳本
5.4 kafka-reassign-partitions腳本
5.5 kafka-console-producer腳本
5.6 kafka-console-consumer腳本
5.7 kafka-consumer-groups腳本
5.8 DumpLogSegments
5.9 kafka-producer-perf-test腳本
5.10 kafka-consumer-perf-test腳本
5.11 kafka-mirror-maker腳本
本章小結
這是一個數據大爆炸的時代,互聯網成為瞭數據傳播的主要載體。大數據處理平颱在現代化的互聯網公司進行商業決策、規劃發展、市場拓展等方麵扮演著越來越重要的角色。Kafka作為大數據平颱的重要組件之一,受到越來越多的設計人員和開發人員的青睞,Kafka的社區也變得越來越活躍,Kafka本身的架構設計、應用場景也得到瞭長足的發展。
Kafka最開始由LinkedIn設計開發,並於2011年年初開源,2012年10月成為Apache基金會的頂級項目。目前Kafka為越來越多的分布式大數據處理係統提供支持,其中也包括著名的Apache Spark,LinkedIn、Netflix、Uber、Verizon、網易、美團等互聯網公司也選擇以Kafka為基礎搭建其大數據處理平颱或消息中間件係統。隨著Kafka的應用場景越來越豐富,用戶對Kafka的吞吐量、可擴展性、穩定性和可維護性等有瞭更多的期許,也有很多開發人員參與到Kafka的開發建議製定和代碼提交中。在Kafka 0.10.X版本中齣現瞭很多令人欣喜的新功能,本書深入剖析瞭Kafka 0.10.X的內部設計和實現細節。
本書以Kafka 0.10.0版本源碼為基礎,深入剖析瞭Kafka的各個模塊的實現,包括Kafka的生産者客戶端、消費者客戶端、服務端的各個模塊以及常用的管理腳本。筆者對Kafka設計的理解和經驗分享也穿插在瞭剖析源碼的過程中,希望讀者能夠通過本書理解Kafka的設計原理和源碼實現,同時也學習到Kafka中優秀的設計思想以及Java和Scala的編程技巧和規範。
如何閱讀本書
由於本書的篇幅限製,本書並沒有詳細介紹Kafka源碼中涉及的所有基礎知識,例如Java NIO、J.U.C包中工具類的使用、命令行參數解析器的使用等,為方便讀者閱讀,筆者僅介紹瞭一些必須且重要的基礎知識。在開始源碼分析之前,希望讀者按照第1章的相關介紹完成Kafka源碼環境的搭建,並瞭解Kafka的核心概念,這樣也可以有更好的學習效果。
本書共五章,它們互相之間的聯係並不是很強,讀者可以從頭開始閱讀,也可以選擇自己感興趣的章節進行學習。
第1章是Kafka的快速入門,其中介紹瞭Kafka的背景、特性以及應用場景。之後介紹瞭筆者在實踐中遇到的一個以Kafka為中心的案例,並分析瞭在此案例中選擇使用Kafka的具體原因和Kafka起到的關鍵作用。最後介紹瞭Kafka中的核心概念和Kafka源碼調試環境的搭建。
第2章介紹瞭生産者客戶端的設計特點和實現細節,剖析瞭KafkaProducer攔截消息、序列化消息、路由消息等功能的源碼實現,介紹瞭RecordAccumulator的結構和實現。最後剖析瞭KafkaProducer中Sender綫程的源碼。
第3章介紹瞭Kafka的消息傳遞保證語義並給齣瞭相關的實踐建議,還介紹瞭Consumer Group Rebalance操作各個版本方案的原理和弊端。最後詳細剖析瞭KafkaConsumer相關組件的運行原理和實現細節。
第4章介紹瞭構成Kafka服務端的各個組件,依次分析瞭Kafka網絡層、API層、日誌存儲、DelayedOperationPurgatory組件、Kafka的副本機製、KafkaController、GroupCoordinator、Kafka的身份認證與權限控製以及Kafka監控相關的實現。本章是Kafka的核心內容,涉及較多的設計細節和編程技巧,希望讀者閱讀之後有所收獲。
第5章介紹瞭Kafka提供的多個腳本工具的使用以及具體實現原理,瞭解這些腳本可以幫助管理人員快速完成一些常見的管理、運維、測試功能。
如果讀者在閱讀本書的過程中,發現任何不妥之處,請將您寶貴的意見和建議發送到郵箱xxxlxy2008@163.com,也歡迎讀者朋友通過此郵箱與筆者進行交流。
緻謝
感謝電子工業齣版社博文視點的陳曉猛老師,是您的辛勤工作讓本書的齣版成為可能。同時還要感謝許多我不知道名字的幕後工作人員為本書付齣的努力。
感謝張占龍、張亞森、楊威、劉剋剛、劉思等朋友在百忙之中抽齣時間對本書進行審閱和推薦。感謝林放、米秀明、星亮亮、王鬆洋、褚洪洋、曾天寜、葛彬、趙美凱、顧聰慧、孫嚮川、段鑫鼕、彭海蛟、趙仁偉等同事,幫助我解決工作中的睏難。
感謝馮玉玉、李成偉,是你們讓寫作的過程變得妙趣橫生,是你們讓我更加積極、自信,也是你們的鼓勵讓我完成瞭本書的寫作。
最後,特彆感謝我的母親大人,謝謝您默默為我做齣的犧牲和付齣,您是我永遠的女神。
徐郡明
Apache Kafka源碼剖析 下載 mobi pdf epub txt 電子書 格式 2024
Apache Kafka源碼剖析 下載 mobi epub pdf 電子書非常好的書,讀完對自己成長很有幫助,對自己之前的知識有瞭更深的瞭解。
評分全書90%都是貼的源代碼,枯燥也看不懂,幾乎很少有作者主觀概述。沒什麼實戰價值,想研究源碼的可以參考,想在生産中應用的話就不建議買瞭,買瞭也是放著,我翻瞭幾頁,從此就沒再看過。
評分粗幸福天成禪院如此如此非常穿衣服
評分??Apache Kafka源碼剖析
評分??Apache Kafka源碼剖析,看看書。
評分書籍不錯,正版的,同事挺喜歡
評分正版書,還不錯,內容還中
評分??Apache Kafka源碼剖析
評分??Apache Kafka源碼剖析
Apache Kafka源碼剖析 mobi epub pdf txt 電子書 格式下載 2024