目錄
介紹:
瞭解kafka項目的目錄結構,才能去更好的閱讀kafka源碼,下面會整體介紹一下kafka源碼目錄結構,然後在着重講core 和client兩個核心目錄,本文是以0.11.0版本爲例講解。
一.目錄結構
bin: 啓動腳本;
clients:生產者和消費者代碼;0.11版本是java語言開發;
config: 配置文件;
core : kafka服務實例的代碼,scala語言開發,實現了集羣管理,分區副本管理,消息存儲和消息獲取,網絡通信等功能;
docs:kakfa文檔
examples:生產者消費者demo 啓動腳本;
streams:kafka 流相關代碼;
二.core目錄
這個包下是kafka核心包,有集羣管理,分區管理,存儲管理,副本管理,消費者組管理,網絡通信,消費管理等核心類。
admin包:執行管理命令的功能;
api 包: 封裝請求和響應DTO對象;
cluster包:集羣對象,例如Replica 類代表一個分區副本,Partition類代表一個分區;
common包: 通用jar包;
controller包: 和kafkaController(kc)相關的類,重點模塊,一個kafka集羣只有一個leader kc,該kc負責 分區管理,副本管理,並保證集羣信息在集羣中同步;
coordinator包:組協調者相關,負責處理消費者組的代碼;
log包: 磁盤存儲相關,重點模塊;
network包: 網絡相關,重點模塊,使用的是NIO,從這裏可學習如何應用java 的NIO類;
consumer包,producer好多廢棄類,無需關注;
server包: kafka實例的各種管理類,核心包,也是重點;
tools 工具類。
三.client目錄
下面是kafka項目目錄結構,clients 包下面是生產者producer 和消費者consumer的代碼。如果要看kafka是如何發送消息和消費消息的,可以看這個包下的源碼 。重點關注KafkaProducer 和KafkaConsumer這兩個類。