[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)]