Kafka 原始碼剖析(一)

全面攻城發表於2018-03-15

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,其工程分佈結構如下圖所示:

WechatIMG42.jpeg

WechatIMG46.jpeg

WechatIMG47.jpeg

3.原始碼環境

  閱讀Kafka原始碼需要準備以下環境:

  • JDK
  • IDE(Eclipse,IDEA或者其他)
  • gradle

  關於環境的搭建,大家可以利用搜尋引擎去完成,比較基礎,這裡就不多贅述了。然後在原始碼工程目錄下執行以下命令:

  • gradle idea(編輯器為IDEA)
  • gradle eclipse(編輯器為Eclipse)

  如何選擇,可按照自己所使用的編輯器即可。這裡筆者所使用的是IDEA,執行命令後,會在原始碼目錄生成以下檔案,如下圖所示:

WechatIMG43.jpeg

4.執行原始碼

  這裡,我們先在config模組下設定server.properties檔案,按照自己的需要設定,比如分割槽數,log的儲存路徑,zookeeper的地址設定等等。然後,我們在編輯器中的執行中設定相關的啟動引數,如下圖所示:

WechatIMG44.jpeg

WechatIMG45.jpeg

如圖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 執行結果

image.png

6 總結

本地啟動執行程式碼 下篇分析 server-start 啟動方式

相關文章