源码系列第1弹 | 带你快速攻略Kafka源码之旅入门篇(2)

本文涉及的产品
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
简介: 源码系列第1弹 | 带你快速攻略Kafka源码之旅入门篇

Gradle 下载的源码不需要进行安装,下载解压后即可:


wget https://services.gradle.org/distributions/gradle-6.6-bin.zip



开始配置 Gradle 环境变量(以Ubuntu系统为例):


sudo vim /etc/profile


# 配置scala安装路径及环境变量

GRADLE_HOME=/home/wangjianghua/src/deps/gradle-6.6

export GRADLE_HOME

export PATH=$PATH:$GRADLE_HOME/bin


# 使其生效

source /etc/profile


# 验证gradle环境是否生效

gradle -v


出现下面提示,说明 Gradle 环境搭建成功:




03


Zookeeper 环境搭建



Zookeeper 下载并解压如下:


wget http://archive.apache.org/dist/zookeeper/stable/apache-zookeeper-3.6.3.tar.gz



修改 Zookeeper 配置:


# 进入配置目录

cd apache-zookeeper-3.6.3/conf


# 修改配置文件名称

mv zoo_sample.cfg zoo.cfg


# 如需修改日志目录可以更改zoo.cfg配置的datas路径

dataDir=/xxx/zookeeper/data


启动 Zookeeper 服务:


# 进入执行目录【bin】

cd apache-zookeeper-3.6.3/bin


# 执行启动命令

./zkServer.sh start


出现下面提示,说明 Zookeeper 环境搭建成功:




04


Kafka 源码环境搭建


http://kafka.apache.org/downloads



Kafka 源码依赖 Gradle 环境,本文使用 gradle 命令来构建 Kafka 源码环境。


gradle 命令说明:


# 下载并更新gradle 套件即 wrapper

gradle


# 构建 jar包并运行

./gradlew jar


# 构建项目,看你是idea工具还是eclipse

./gradlew idea

./gradlew eclipse


# 构建源码包

./gradlew srcJar


# 构建javadoc文档

./gradlew aggregatedJavadoc


# 清理并构建

./gradlew clean

首先 git 切换到对应的 2.7.0 版本:



然后先开始执行 gradle 命令,构建并更新 gradle wrapper 套件:



待执行完后,会生成 gradle 目录, 如果此时 Jar 包没有下载成功的话,可以从网盘下载后,切换到 gradle/wrapper 目录,将 Jar 包复制到该目录。


     



# 进入 kafka 目录执行

./gradlew jar  #构建jar包,执行时间比较长,耐心等待

./gradlew idea #把 Kafka 源码导入到idea中,执行时间比较长,耐心等待

./gradlew eclipse #如果是使用的eclipse,可以执行此命令



待执行完后,最后通过 IDEA 导入安装好的 Kafka 源码,如下:



至此,IDEA Kafka 源码环境已经安装完成。

03 Kafka 源码全景图

上面聊完 Kafka 源码安装环境,接下来我们先来聊聊 Kafka 源码的一个全景图,看看Kafka 都包括哪些核心模块如下图所示:



                   



从功能上讲,Kafka 源码可以分为五大模块:


1服务端源码:实现 Kafka Broker 核心功能模块,包括日志存储、控制器、协调器、元数据管理及状态机管理、延迟机制、消费者组管理、高并发网络架构模型实现等。

2Java 客户端源码:实现了 Producer、Consumer 与 Broker 交互机制以及通用组件支撑代码

3Connect 源码:用来构建异构数据双向流式同步服务

4Stream 源码:用来实现实时流处理相关功能。

5Raft 源码:raft 一致性协议实现。

由此可见,服务端源码是理解 Kafka 底层存储架构和集群运行原理的核心,也是很多线上问题频发的重灾区。而客户端主要是跟服务端进行交互生产和消费数据,所以服务端源码」和 客户端源码是 Kafka 实现最核心和精华的代码,也是我们深入研究的核心重点,因此本源码系列主要剖析客户端以及服务端相关源码实现,其他模块的实现后续有机会在进行剖析





接下来我们分别来看看服务端源码和客户端源码的全景图以及我们分析的源码重点。


01


Kafka 生产端源码全景图


从生产者端来说,我们可以学习到 Kafka Producer 是如何进行初始化; 集群元数据如何拉取、加载、更新; 又是如何通过 Java NIO 设计客户端网络通信模块的,以及如何通过缓存、异步、批量、内存池等设计保证消息在生产过程中的高性能和可靠性的。


对于不了解 Producer 的读者们,可以查看聊聊 Kafka Producer 那点事


我把整个生产端源码按照功能分为5大模块,每个模块会进一步的划分出一些子部分, 详细给出了各个组件级的源码分析, 你可以看下面这张全景图的重点介绍



02


Kafka 服务端源码全景图


从服务端来说,我们可以学习到 Kafka 服务端是如何管理和存储日志的,以及分区和副本是如何设计和实现的。


我把整个服务端源码按照功能分为5大模块,每个模块会进一步的划分出一些子部分, 详细给出了各个组件级的源码分析, 你可以看下面这张全景图的重点介绍



03


Kafka 消费端源码全景图


从消费者来说,我们可以学习到 Kafka consumer 初始化流程,组协调者机制,如何跟服务端进行通信,以及消费组如何实现消费的重平衡的。


对于不了解 Consumer 的读者们,可以先看看 聊聊 Kafka Consumer 那点事


我把整个消费端源码按照功能分为6大模块,每个模块会进一步的划分出一些子部分, 详细给出了各个组件级的源码分析, 你可以看下面这张全景图的重点介绍:

相关文章
|
5月前
|
消息中间件 Java Kafka
kafka入门demo
kafka入门demo
34 0
|
5月前
|
消息中间件 分布式计算 Kafka
亿万级别Kafka演进之路:可靠性+事务+消息中间件+源码+日志
Kafka起初是由LinkedIn公司采用Scala语言开发的-一个多分区、多副本且基于ZooKeeper协调的分布式消息系统,现已被捐献给Apache基金会。目前Kafka已经定位为一个分布式流式处理平台,它以高吞吐、可持久化、可水平扩展、支持流数据处理等多种特性而被广泛使用。
|
2月前
|
消息中间件 存储 负载均衡
Kafka【付诸实践 01】生产者发送消息的过程描述及设计+创建生产者并发送消息(同步、异步)+自定义分区器+自定义序列化器+生产者其他属性说明(实例源码粘贴可用)【一篇学会使用Kafka生产者】
【2月更文挑战第21天】Kafka【付诸实践 01】生产者发送消息的过程描述及设计+创建生产者并发送消息(同步、异步)+自定义分区器+自定义序列化器+生产者其他属性说明(实例源码粘贴可用)【一篇学会使用Kafka生产者】
195 4
|
2月前
|
消息中间件 分布式计算 Kafka
SparkStreaming(SparkStreaming概述、入门、Kafka数据源、DStream转换、输出、关闭)
SparkStreaming(SparkStreaming概述、入门、Kafka数据源、DStream转换、输出、关闭)(一)
|
2月前
|
消息中间件 Java Kafka
Kafka【环境搭建 01】kafka_2.12-2.6.0 单机版安装+参数配置及说明+添加到service服务+开机启动配置+验证+chkconfig配置说明(一篇入门kafka)
【2月更文挑战第19天】Kafka【环境搭建 01】kafka_2.12-2.6.0 单机版安装+参数配置及说明+添加到service服务+开机启动配置+验证+chkconfig配置说明(一篇入门kafka)
58 1
|
2月前
|
消息中间件 存储 Kafka
【深入浅出 RocketMQ原理及实战】「底层源码挖掘系列」透彻剖析贯穿一下RocketMQ和Kafka索引设计原理和方案
【深入浅出 RocketMQ原理及实战】「底层源码挖掘系列」透彻剖析贯穿一下RocketMQ和Kafka索引设计原理和方案
49 1
|
2月前
|
消息中间件 网络协议 Kafka
Kafka【付诸实践 02】消费者和消费者群组+创建消费者实例+提交偏移量(自动、手动)+监听分区再平衡+独立的消费者+消费者其他属性说明(实例源码粘贴可用)【一篇学会使用Kafka消费者】
【2月更文挑战第21天】Kafka【付诸实践 02】消费者和消费者群组+创建消费者实例+提交偏移量(自动、手动)+监听分区再平衡+独立的消费者+消费者其他属性说明(实例源码粘贴可用)【一篇学会使用Kafka消费者】
87 3
|
4月前
|
消息中间件 存储 分布式计算
Apache Kafka-初体验Kafka(01)-入门整体认识kafka
Apache Kafka-初体验Kafka(01)-入门整体认识kafka
43 0
|
5月前
|
消息中间件 缓存 Kafka
kafka源码解析——第一篇:producer
kafka源码解析——第一篇:producer
42 0
|
5月前
|
消息中间件 Java Shell
Linux【脚本 03】shell脚本离线安装配置集结JDK+InfluxDB+Zookeeper+Kafka(安装文件及脚本源码网盘分享)
Linux【脚本 03】shell脚本离线安装配置集结JDK+InfluxDB+Zookeeper+Kafka(安装文件及脚本源码网盘分享)
29 0

热门文章

最新文章