1. 程式人生 > >kafka原始碼閱讀環境

kafka原始碼閱讀環境

在開始分析kafka的原始碼之前,我們先要手動搭建kafka原始碼的除錯環境,需要準備的軟體有,java、scala、gradle、zookeeper、kafka、ide
軟體版

java:1.8.0_141
scala:2.11.4
gradle:4.7
zookeeper:3.4.6
kafka:1.0.0  
ide:idea 2017.1.5
OS:window7  64

1、安裝:
首先安裝 jdk 、scala 、gradle。這裡就不詳細介紹了,這個網上應該很多說明。這個主要介紹一下window下面安裝zookeeper。
從zookeeper官網下載其二進位制壓縮包,之後解壓縮,這裡我們部署的是單機模式,因為主要是給kafka來使用,
解壓以後,將%ZOOKEEPER%\conf\zoo_sample.cfg檔案複製一份,重新命名為zoo.cfg。修改zoo.cfg配置檔案,這裡主要就是修改dataDir配置項,此配置項指向zookeeper儲存資料的目錄,其他配置可以不進行修改
這裡寫圖片描述


以上修改了以後,和java一樣需要配置環境變數
由於kafka使用依賴於zookeeper服務,在啟動kafka之前,需要先使用zkServer命令,啟動上文已經配置好的zookeeper服務
這裡寫圖片描述

2、kafka原始碼構建
從kafka官網上面下載kafka-1.0.0-src,解壓,使用命令列進入kafka的根目錄,使用gradle idea 命令進行構建,如果是eclipse工程請使用gradle eclipse命令。在構建過程中會從網上下載各種依賴包,時間會有點長,最終輸出BUILD SUCCESSFUL字樣,表示構建成功
這裡寫圖片描述
3、idea 安裝scala 外掛
在 settings -》plugins->scala
這裡寫圖片描述

4、配置、啟動kafka
在kafka服務端使用log4j輸出日誌,啟動前需要把log4j.properties配置檔案放置到src/main/scala路徑下,然後執行程式,這樣才能正確輸出日誌資訊,此log4j.properties檔案可以從conf目錄中獲取
這裡寫圖片描述
這裡寫圖片描述

server.properties是kafka的主要配置檔案,這裡我們主要修改一下log.dirs,其他的配置檔案後面在介紹
這裡寫圖片描述

5、配置kafka的啟動引數
kafka 服務端的入口類是kafka.Kafka,除了指定入口類,還需要指定server.properties配置檔案所在位置,即在kafka原始碼的config目錄下
第一次啟動時,idea會重新編譯整個專案,編譯完成後啟動,
這裡寫圖片描述


這裡寫圖片描述

6、驗證
為了驗證上文配置的原始碼環境是否成功,可以使用kafka二進位制包中自帶的三個指令碼進行驗證,分佈是kafka-topics用於建立topic,kafka-console-producer是一個命令列producer,kafka-console-consumer是一個命令列consumer
首先使用kafka-topics.bat建立一個”test” topic其中的partition和replication-factor都為1

首先我們需要在kafka的原始碼路徑上面執行 gradle jarAll,執行完成以後會出現BUILD SUCCESSFUL的字眼
這裡寫圖片描述
接下來進入到%KAFKA_HOME%\bin\windows下面
執行
kafka-topics.bat –create –zookeeper 192.168.1.106:2181 –replication-factor 1 –partitions 1 –topic test
這裡寫圖片描述
當topic建立成功以後,啟動2個命令列視窗,分別執行下面2行命令,一個作為生產者,另一個作為消費者
kafka-console-producer.bat –broker-list 192.168.1.106:9092 –topic test
kafka-console-consumer.bat –zookeeper 192.168.1.106:2181 –topic test
啟動完成以後,在命令列裡面隨便輸入內容,可以在消費者命令列視窗中看到相應的訊息,這就表明我們搭建的kafka原始碼環境可以正常運行了,安裝完成之後,可以直接在IDE中進行debug分析kafka的工作流程了
這裡寫圖片描述
這裡寫圖片描述

                                                 更多請關注微信公眾號
                                             更多請關注微信公眾號