Kafka学习笔记: kafka2.4.0 源码编译&说明

前言

       相对来说,kafka 编译比较简单,不过 kafka 是 scala 写的,所以在环境上要安装一下插件.

下载2.4.0源码包

链接:https://pan.baidu.com/s/15h2qn14HV8HCoEPldT77LA  密码:e59n

官方: http://kafka.apache.org/

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

安装依赖插件

Scala 2.12.10 +

JDK1.8 +

需要安装 gradlew 

修改配置文件

打开项目文件夹,修改gradle.properties文件

编译

构建 jar包并运行

./gradlew jar

构建源码包

./gradlew srcJar

构建javadoc文档

./gradlew aggregatedJavadoc

清理并构建

./gradlew clean

 

构建项目

./gradlew idea

./gradlew eclipse

导入项目到 IDE 中

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

在导入的时候选择gradle , 在输入 Gradle home 的时候路径为 : /usr/local/Cellar/gradle/6.0.1/libexec

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

项目目录截图

重点关注的目录:

core :Broker 端工程,保存 Broker 代码。

clients :Client 端工程,保存所有 Client 代码以及所有代码都会用到的一些公共代码。

streams :Streams 端工程,保存 Kafka Streams 代码。

connect :Connect 端工程,保存 Kafka Connect 框架代码以及 File Connector 代码。

源码阅读顺序

log 包 :  log 包中定义了 Broker 底层消息和索引保存机制以及物理格式。 Log、LogSegment 和 LogManager 这几个类,几乎定义了 Kafka 底层的消息存储机制。

controller 包 : controller 包实现的是 Kafka Controller 的所有功能,KafkaController.scala 文件,它封装了 Controller 的所有事件处理逻辑。如果你想弄明白 Controller 的工作原理,最好多读几遍。

coordinator 包下的 group 包代码 : 当前,coordinator 包有两个子 package:group 和 transaction。前者封装的是 Consumer Group 所用的 Coordinator;后者封装的是支持 Kafka 事务的 Transaction Coordinator。了解下 Broker 端是如何管理 Consumer Group 的。这里比较重要的是 GroupMetadataManager 和 GroupCoordinator 类,它们定义了 Consumer Group 的元数据信息以及管理这些元数据的状态机机制。

network 包代码以及 server 包下的部分代码。

Broker 端顶部的入口类是 KafkaApis.scala。这个类是处理所有入站请求的总入口

clients包:

org.apache.kafka.common.record 包。这个包下面是各种 Kafka 消息实体类,比如用于在内存中传输的 MemoryRecords 类以及用于在磁盘上保存的 FileRecords 类。

org.apache.kafka.common.network 包。重点关注下 Selector、KafkaChannel 就好了,尤其是前者,它们是实现 Client 和 Broker 之间网络传输的重要机制。如果你完全搞懂了这个包下的 Java 代码,Kafka 的很多网络异常问题也就迎刃而解了。

org.apache.kafka.clients.producer 包。顾名思义,它是 Producer 的代码实现包,里面的 Java 类很多,你可以重点看看 KafkaProducer、Sender 和 RecordAccumulator 这几个类。

org.apache.kafka.clients.consumer 包。它是 Consumer 的代码实现包。同样地,重点阅读 KafkaConsumer、AbstractCoordinator 和 Fetcher 这几个 Java 文件。

 

参考链接

Kafka核心技术与实战 - 胡夕

https://kafka.apache.org

https://kafka.apache.org/documentation.html#quickstart
 

发布了295 篇原创文章 · 获赞 783 · 访问量 32万+

猜你喜欢

转载自blog.csdn.net/zhanglong_4444/article/details/103624761