Kafka 2.7.x 源码浅析 : kafka2.7.2 编译

一. 前言

编译kafka2.7.2版本, 目前最新版本为2.8.x , 但是因为2.8.x去掉了zk,稳定性不确定, 所以暂时以该版本进行研究.

二. 环境准备

2.1. 下载代码

GIT LAB方式: git clone https://github.com/apache/kafka.git -b 2.7

2.2. 安装环境

  1. Scala 2.11.8 +
  2. JDK1.8 +
  3. 需要安装 gradlew 我这要求是 6.6 版本

三 .安装

3.1. 修改配置文件

修改根目录下的 gradle.properties配置

在这里插入图片描述

3.2. 代码指令

如果你是在 Mac 或 Linux 平台上搭建环境,那么直接运行下列命令构建即可

$ ./gradlew clean build -x test
  • 异常 :

Failed to connect to raw.githubusercontent.com port 443: Connection refused

去找一下直接下载 Wrapper 所需的 Jar 包,手动把这个 Jar 文件拷贝到 kafka 路径下的 gradle/wrapper 子目录下,然后重新执行 gradlew build 命令去构建工程

网盘地址 : 链接: https://pan.baidu.com/s/106bb0CHMiBuc_hnzhCi_Cw 密码: 2bjh

  • 其他指令
# 构建 jar包并运行
 ./gradlew jar

#  构建项目
./gradlew idea
./gradlew eclipse



#  构建源码包
./gradlew srcJar


#  构建javadoc文档
./gradlew aggregatedJavadoc


# 清理并构建
./gradlew clean

3.3. 导入idea

  • 构建项目
#  构建项目
./gradlew idea
  • 将项目导入idea

接着,你需要打开 IDEA,选择“打开工程”,然后再选择 kafka 目录即可。

在导入的时候选择gradle , 在输入 Gradle home 的时候路径为 : /opt/tools/gradle-6.6/bin

如果找不到,可以全局搜索一下.

在这里插入图片描述

四 .代码结构

4.1. 代码安装包结构

bin 目录:保存 Kafka 工具行脚本,我们熟知的 kafka-server-start 和 kafka-console-producer 等脚本都存放在这里。
clients 目录:保存 Kafka 客户端代码,比如生产者和消费者的代码都在该目录下。
config 目录:保存 Kafka 的配置文件,其中比较重要的配置文件是 server.properties。
connect 目录:保存 Connect 组件的源代码。 Kafka Connect 组件是用来实现 Kafka 与外部系统之间的实时数据传输的。
core 目录:保存 Broker 端代码。Kafka 服务器端代码全部保存在该目录下。
streams 目录:保存 Streams 组件的源代码。Kafka Streams 是实现 Kafka 实时流处理的组件。

4.2. 项目结构

controller 包:保存了 Kafka 控制器(Controller)代码,而控制器组件是 Kafka 的核心组件,后面我们会针对这个包的代码进行详细分析。
coordinator 包:保存了消费者端的 GroupCoordinator 代码和用于事务的 TransactionCoordinator 代码。对 coordinator 包进行分析,特别是对消费者端的 GroupCoordinator 代码进行分析,是 Broker 端协调者组件设计原理的关键。
log 包:保存了 Kafka 最核心的日志结构代码,包括日志、日志段、索引文件等, 另外,该包下还封装了 Log Compaction 的实现机制,是非常重要的源码包。
network 包:封装了 Kafka 服务器端网络层的代码,特别是 SocketServer.scala 这个文件,是 Kafka 实现 Reactor 模式的具体操作类,非常值得一读。
server 包:顾名思义,它是 Kafka 的服务器端主代码,里面的类非常多,很多关键的 Kafka 组件都存放在这里,比如状态机、Purgatory 延时机制等。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值