1.基礎概述
在對Kafka使用層面掌握後,進一步提升分析其原始碼是極有必要的。縱觀Kafka原始碼工程結構,不算太複雜,程式碼量也不算大。分析研究其實現細節難度不算太大。今天筆者給大家分析的是其核心處理模組,core模組。
https://www.mail-archive.com/dev@kafka.apache.org/
如果提交程式碼 看這裡的規範
http://kafka.apache.org/contributing.html
2.內容
首先,我們需要對Kafka的工程結構有一個整體的認知度,Kafka 大家最為熟悉的就是其消費者與生產者。然其,底層的儲存機制,選舉機制,備份機制等實現細節,需要我們對其原始碼仔細閱讀學習,思考與分析其設計之初的初衷。下面,我們首先來看看Kafka原始碼工程模組分佈, Github 上的 Kafka 原始碼版本為:0.11.0,其工程分佈結構如下圖所示:
3.原始碼環境
閱讀Kafka原始碼需要準備以下環境:
- JDK
- IDE(Eclipse,IDEA或者其他)
- gradle
關於環境的搭建,大家可以利用搜尋引擎去完成,比較基礎,這裡就不多贅述了。然後在原始碼工程目錄下執行以下命令:
- gradle idea(編輯器為IDEA)
- gradle eclipse(編輯器為Eclipse)
如何選擇,可按照自己所使用的編輯器即可。這裡筆者所使用的是IDEA,執行命令後,會在原始碼目錄生成以下檔案,如下圖所示:
4.執行原始碼
這裡,我們先在config模組下設定server.properties檔案,按照自己的需要設定,比如分割槽數,log的儲存路徑,zookeeper的地址設定等等。然後,我們在編輯器中的執行中設定相關的啟動引數,如下圖所示:
如圖bug 在配置裡新增如下程式碼
vm option:
-Xms512M -Xmx1024M -Xss1M -XX:+CMSClassUnloadingEnabled -Dlog4j.configuration=file:/Users/sunzhenya/Work/spark/souceCode/kafka/core/src/main/resources/log4j.properties -Dkafka.logs.dir=/Users/sunzhenya/Work/spark/kafka/logs
-Dlog4j.debug=config/log4j.properties
program arguments:
config/server.properties
複製程式碼
啟動步驟 先啟動如下程式碼
bin/zookeeper-server-start.sh config/zookeeper.properties
複製程式碼
5 執行結果
6 總結
本地啟動執行程式碼 下篇分析 server-start 啟動方式