阿里技術官kafka學習使用歸納——Kafka源碼剖析實戰文檔

java領域佼佼者 發佈 2020-01-09T18:37:36+00:00

第4章 Kafka服務端4.1 網絡層4.1.1 Reactor模式4.1.2 SocketServer4.1.3 AbstractServerThread4.1.4 Acceptor4.1.5 Processor4.1.6 RequestChannel4.2 API層4.2.1


這是一個數據大爆炸的時代,網際網路成為了數據傳播的主要載體。大數據處理平台在現代化的網際網路公司進行商業決策、規劃發展、市場拓展等方面扮演著越來越重要的角色。Kafka作為大數據平台的重要組件之一,受到越來越多的設計人員和開發人員的青睞,Kafka的社區也變得越來越活躍,Kafka本身的架構設計、應用場景也得到了長足的發展。

Kafka是由Apache軟體基金會開發的一個開源流處理平台,由Scala和Java編寫。Kafka是一種高吞吐量的分布式發布訂閱消息系統,它可以處理消費者在網站中的所有動作流數據。 這種動作(網頁瀏覽,搜索和其他用戶的行動)是在現代網絡上的許多社會功能的一個關鍵因素。 這些數據通常是由於吞吐量的要求而通過處理日誌和日誌聚合來解決。 對於像Hadoop一樣的日誌數據和離線分析系統,但又要求實時處理的限制,這是一個可行的解決方案。Kafka的目的是通過Hadoop的並行加載機制來統一線上和離線的消息處理,也是為了通過集群來提供實時的消息。

由於篇章問題就不一一解釋了,需要學習這份 Kafka源碼剖析實戰文檔的朋友:關注我 + 轉發文章,後台私信【kafka】即可免費獲取

第1章是Kafka的快速入門,其中介紹了 Kaflca的背景、特性以及應用場景。之後介紹了筆者在實踐中遇到的一個以Kafka為中心的案例,並分析了在此案例中選擇使用Kafka的具體原因和Kafka起到的關鍵作用。最後介紹了 Kafka中的核心概念和Kafka源碼調試環境的搭建。

第1章 快速入門

  • 1.1 Kafka簡介
  • 1.2 以Kafka為中心的解決方案
  • 1.3 Kafka核心概念
  • 1.4 搭建Kafka源碼環境



第2章介紹了生產者客戶端的設計特點和實現細節,剖析了 KafkaProducer攔截消息、序列化消息、路由消息等功能的源碼實現,介紹了 RecordAccumulator的結構和實現。最後剖析了 KafkaProducer中Sender線程的源碼。

第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章介紹了 Kafka的消息傳遞保證語義並給出了相關的實踐建議,還介紹了 ConsumerGroup Rebalance操作各個版本方案的原理和弊端。最後詳細剖析了 KafkaConsumer相關組件的運行原理和實現細節。

第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章介紹了構成Kaflca服務端的各個組件,依次分析了 Kaflca網絡層、API層、日誌存儲、DelayedOperationPurgatory 組件、Kafka 的副本機制、KafkaController. GroupCoordinator、Kafka的身份認證與權限控制以及Kafka監控相關的實現。本章是Kafka的核心內容,涉及較多的設計細節和編程技巧,希望讀者閱讀之後有所收穫。

第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提供的多個腳本工具的使用以及具體實現原理,了解這些腳本可以幫助管理人員快速完成一些常見的管理、運維、測試功能。

第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猶如經絡,串聯整個系統。《 Kafka源碼剖析實戰》通過大量的設計圖展示、代碼分析、示例分享,把Kafka的實現脈絡展示在讀者面前,幫助讀者更好地研讀Kafka代碼

由於文檔的內容過多,只截取了目錄部分,

需要這份Kafka源碼剖析實戰的朋友:關注我 + 轉發文章,後台私信【kafka】即可免費獲取

關鍵字: