Kafka源碼依賴於Scala環境,首先須要安裝scala,這塊請自行百度進行安裝。html
傳送門java
固然,咱們要分析源碼,須要下載源碼,請自行從github上面下載。git
說明:本文使用的kafka版本爲0.10.0.1,這是目前公司使用的版本。github
下面說明下kafka源碼的工程結構: api
下面主要對core目錄模塊進行說明,這塊是kafka的核心。安全
- admin:管理員模塊,操做和管理topic,paritions相關,包含create,delete topic,擴展patitions
- api:這塊主要負責數據的組裝,客戶端和服務端數據交互的組裝
- client:這個模塊比較簡單,只有一個類,主要是獲取一些元數據,包括topic、broker等
- cluster:該模塊定義了幾個在kafka中比較重要的類:Broker,BrokerEndPoint,Cluster,EndPoint,Partition,Replica等,後續咱們會對他們之間的關係進行分析
- common:通用類,定義了一些異常類等等
- consumer:comsumer處理模塊,負責與消費者相關的操做
- controller:負責中央控制器選舉,partition的leader選舉,副本分配,副本從新分配,partition和replica擴容
- coordinator:協調器,rebalance的一些協調器,好比延遲心跳等
- javaapi:kafka提供出來的java生產消費的api
- log:文件存儲模塊,負責讀寫全部kafka的topic消息數據,也就是消息持久化模塊
- message:封裝多個消息組成一個「消息集」或壓縮消息集
- metrics:內部狀態監控模塊
- network:kafka的網絡處理模塊,負責接受和處理客戶端鏈接
- producer:生產者模塊,包括同步和異步發送消息
- security.auth:安全認證模塊
- serializer:序列化和反序列化工具
- server:kafka服務啓動相關內容
- tools:工具模塊,內容挺多,主要是與kafka相關的工具
- utils:通用工具模塊,包括zk等等
- Kafka:程序入口