【Kafka】源码搭建与测试

162 阅读1分钟

一、前言

环境准备:

  • JDK:1.8.0_241
  • Scala:2.12.8 下载地址 (用 IDEA 插件也可)
  • Gradle:6.6(用 IDEA 插件也可)
# scala 配置
$ vim /etc/profile
SCALA_HOME=/software/Software/Java/scala-2.12.8
export SCALA_HOME
export PATH=$PATH:$SCALA_HOME/bin
​
# Gradle 配置
$ vim /etc/profile
export GRADLE_HOME=/software/Software/Java/Gradle/gradle-7.0.2
export PATH=${GRADLE_HOME}/bin:${PATH}
​
# 使环境变量生效
$ source /etc/profile

为什么选用版本 Kafka 2.7

  • kafka 2.7 版本还是带 Zookeeper2.8 之后就换了。
  • 公司目前使用的 Kafka 版本仍带 Zookeeper
  • 先了解 Kafka 原先架构,再了解
  1. 下载 Kafka 源码官网

源码-2022-08-0711-19-31.png

# 解压缩
$ tar -zxvf kafka-2.7.1-src.tgz
  1. Kafka 源码导入 IDEA

源码-2022-08-0711-20-58.png

  1. 导包,修改 build.gradle(可选) 进入 kafka 源码包,修改 build.gradle 文件,在原来配置上,添加 ali 私服配置。
buildscript {
    repositories {
        maven {
            url 'http://maven.aliyun.com/nexus/content/groups/public/'
        }
        maven {
            url 'http://maven.aliyun.com/nexus/content/repositories/jcenter'
        }
    }
}
 
allprojects {
    repositories {
        maven {
            url 'http://maven.aliyun.com/nexus/content/groups/public/'
        }
        maven {
            url 'http://maven.aliyun.com/nexus/content/repositories/jcenter'
        }
    }
}

源码-2022-08-0711-33-05.png

  1. 代码构建
# 执行后,会下载一堆 jar 包
$ ./gradlew clean build -x test

源码-2022-08-1000-42-16.png

Zookeeper 安装启动

这里使用 docker

  1. 拉镜像:sudo docker pull zookeeper
  2. 启动容器:sudo docker run -d --name zookeeper -p 2181:2181 zookeeper
$ sudo docker run -d --name zookeeper -p 2181:2181 zookeeper
a86dff3689b68f6af7eb3da5a21c2dba06e9623f3c961154a8bbbe3e9991dea4
$ sudo docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                                                  NAMES
a86dff3689b6        zookeeper           "/docker-entrypoint.…"   7 seconds ago       Up 6 seconds        2888/tcp, 3888/tcp, 0.0.0.0:2181->2181/tcp, 8080/tcp   zookeeper

二、环境验证

  1. 配置日志:拷贝 log4j.propertiesresources 目录需自己创建)

源码-2022-08-1000-42-17.png

源码-2022-08-1000-42-18.png

  1. 修改 config 目录下的 server.properties 文件
# 修改日志目录为当前项目下的 kafka-logs
log.dirs=/home/donald/Documents/Code/Source/kafka-2.7.1-src/kafka-logs
  1. 添加依赖 slfj 日志 jar
compile group: 'log4j', name: 'log4j', version: '1.2.17'
compile group: 'org.slf4j', name: 'slf4j-api', version: '1.7.30'
compile group: 'org.slf4j', name: 'slf4j-log4j12', version: '1.7.30'

project(':core') { 下添加上面依赖:

源码-2022-08-1001-11-27.png

  1. 启动 Kafka
  • 可以直接去 core/src/main/scala/Kafka 中启动
  • 或者直接配置

源码-2022-08-1001-12-48.png

Kafka 启动成功后,显示如下:

源码-2022-08-1001-15-35.png

测试:生产和消费数据

  1. 使用 kafka 自带脚本创建一个 topictest_topic
$ ./kafka-topics.sh --zookeeper localhost:2181 --create --topic test_topic --partitions 1 --replication-factor 1

源码-2022-08-1001-17-20.png

  1. 使用 kafka 自带脚本创建消费者去消费 test_topic
$ ./kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test_topic

源码-2022-08-1001-18-39.png

  1. 使用 kafka 自带脚本创建生产者去生产消息并发送到 test_topic
$ ./kafka-console-producer.sh --broker-list localhost:9092 --topic test_topic

源码-2022-08-1001-19-49.png

  1. 在生产者控制台输入消息,则在消费端看到消息

源码-2022-08-1001-21-40.png

消息端就可看到:

源码-2022-08-1001-21-41.png

至此验证结束,发送消息和接收消息,Kafkabroker 均有日志打印。