[TOC]
本文结合kafka启动阶段步骤,一步步分析启动阶段中涉及到的源码过程,后续将从架构到内容,从服务端到客户端,彻底解读kafka的代码。
1. 启动kafka自带的zk实例
启动kafka的第一步是具有一个zk的状态管理实例,可以使用用户自己安装的zk,也可以选择使用kafka发布包自带的zk服务端脚本,启动一个zk服务端实例。鉴于目的是阅读代码,就不在另外安装了,直接利用kafka提供的单实例即可。
bin/zookeeper-server-start.sh
脚本实际有效执行
kafka-run-class.sh org.apache.zookeeper.server.quorum.QuorumPeerMain
这个类来自kafka 引入的zookeeper-3.4.9.jar
包(该jar位于kafka安装路径下的libs
子路径下面),
走读这个QuorunPeerMain
类可以发现,他使用参数后面带的zookeeper.conf
文件初始化了一个zookeeper节点。节点绑定后,会绑定2181
端口,允许客户端通过该端口进行连接。
[图片上传失败...(image-d7c640-1541058788750)]
2. 启动kafka的服务端
bin/kafka-server-start.sh config/server.properties
脚本调用的是kafka的核心服务端类库,进入 kafka.Kafka。基于的服务端配置文件是:config/server.properties
在打印的启动信息中,主要包含以下部分:
- 基础环境信息
- jdk信息
- 系统os信息
- 启动和运行用户信息
- zk连接信息
- kafka 集群信息
- 日志存储(默认是/tmp/kafka-logs),包含清理策略(默认五分钟)
- 客户端连接信息:端口(9092)等
- 在zk中创建
broker
,controller
等信息
3. 执行测试
3.1 创建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)]
网友评论