Kafka源碼依賴于Scala環(huán)境,首先需要安裝scala,這塊請(qǐng)自行百度進(jìn)行安裝。
當(dāng)然,我們要分析源碼,需要下載源碼,請(qǐng)自行從github上面下載。
說(shuō)明:本文使用的kafka版本為0.10.0.1,這是目前公司使用的版本。
下面說(shuō)明下kafka源碼的工程結(jié)構(gòu):
image
下面主要對(duì)core目錄模塊進(jìn)行說(shuō)明,這塊是kafka的核心。
- admin:管理員模塊,操作和管理topic,paritions相關(guān),包含create,delete topic,擴(kuò)展patitions
- api:這塊主要負(fù)責(zé)數(shù)據(jù)的組裝,客戶端和服務(wù)端數(shù)據(jù)交互的組裝
- client:這個(gè)模塊比較簡(jiǎn)單,只有一個(gè)類,主要是獲取一些元數(shù)據(jù),包括topic、broker等
- cluster:該模塊定義了幾個(gè)在kafka中比較重要的類:Broker,BrokerEndPoint,Cluster,EndPoint,Partition,Replica等,后續(xù)我們會(huì)對(duì)他們之間的關(guān)系進(jìn)行分析
- common:通用類,定義了一些異常類等等
- consumer:comsumer處理模塊,負(fù)責(zé)與消費(fèi)者相關(guān)的操作
- controller:負(fù)責(zé)中央控制器選舉,partition的leader選舉,副本分配,副本重新分配,partition和replica擴(kuò)容
- coordinator:協(xié)調(diào)器,rebalance的一些協(xié)調(diào)器,比如延遲心跳等
- javaapi:kafka提供出來(lái)的java生產(chǎn)消費(fèi)的api
- log:文件存儲(chǔ)模塊,負(fù)責(zé)讀寫所有kafka的topic消息數(shù)據(jù),也就是消息持久化模塊
- message:封裝多個(gè)消息組成一個(gè)“消息集”或壓縮消息集
- metrics:內(nèi)部狀態(tài)監(jiān)控模塊
- network:kafka的網(wǎng)絡(luò)處理模塊,負(fù)責(zé)接受和處理客戶端連接
- producer:生產(chǎn)者模塊,包括同步和異步發(fā)送消息
- security.auth:安全認(rèn)證模塊
- serializer:序列化和反序列化工具
- server:kafka服務(wù)啟動(dòng)相關(guān)內(nèi)容
- tools:工具模塊,內(nèi)容挺多,主要是與kafka相關(guān)的工具
- utils:通用工具模塊,包括zk等等
- Kafka:程序入口