[TOC]
本文結(jié)合kafka啟動(dòng)階段步驟,一步步分析啟動(dòng)階段中涉及到的源碼過(guò)程,后續(xù)將從架構(gòu)到內(nèi)容,從服務(wù)端到客戶(hù)端,徹底解讀kafka的代碼。
1. 啟動(dòng)kafka自帶的zk實(shí)例
啟動(dòng)kafka的第一步是具有一個(gè)zk的狀態(tài)管理實(shí)例,可以使用用戶(hù)自己安裝的zk,也可以選擇使用kafka發(fā)布包自帶的zk服務(wù)端腳本,啟動(dòng)一個(gè)zk服務(wù)端實(shí)例。鑒于目的是閱讀代碼,就不在另外安裝了,直接利用kafka提供的單實(shí)例即可。
bin/zookeeper-server-start.sh 腳本實(shí)際有效執(zhí)行
kafka-run-class.sh org.apache.zookeeper.server.quorum.QuorumPeerMain
這個(gè)類(lèi)來(lái)自kafka 引入的zookeeper-3.4.9.jar 包(該jar位于kafka安裝路徑下的libs子路徑下面),
走讀這個(gè)QuorunPeerMain 類(lèi)可以發(fā)現(xiàn),他使用參數(shù)后面帶的zookeeper.conf 文件初始化了一個(gè)zookeeper節(jié)點(diǎn)。節(jié)點(diǎn)綁定后,會(huì)綁定2181端口,允許客戶(hù)端通過(guò)該端口進(jìn)行連接。
[圖片上傳失敗...(image-d7c640-1541058788750)]
2. 啟動(dòng)kafka的服務(wù)端
bin/kafka-server-start.sh config/server.properties
腳本調(diào)用的是kafka的核心服務(wù)端類(lèi)庫(kù),進(jìn)入 kafka.Kafka?;诘姆?wù)端配置文件是:config/server.properties
在打印的啟動(dòng)信息中,主要包含以下部分:
- 基礎(chǔ)環(huán)境信息
- jdk信息
- 系統(tǒng)os信息
- 啟動(dòng)和運(yùn)行用戶(hù)信息
- zk連接信息
- kafka 集群信息
- 日志存儲(chǔ)(默認(rèn)是/tmp/kafka-logs),包含清理策略(默認(rèn)五分鐘)
- 客戶(hù)端連接信息:端口(9092)等
- 在zk中創(chuàng)建
broker,controller等信息
3. 執(zhí)行測(cè)試
3.1 創(chuàng)建topic
bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic liyubo
3.2 列出topic
bin/kafka-topics.sh --list --zookeeper localhost:2181
[圖片上傳失敗...(image-d13ad1-1541058788750)]