从今天开始我将为大家奉上 Kafka 源码剖析系列文章,正式开启 「Kafka的源码之旅」,跟我一起来掌握 Kafka 源码核心架构设计思想吧。
今天这篇我们先来聊聊 Kafka 源码环境搭建、源码全景图以及后续源码剖析之旅路线,带你梳理整体的源码分析脉络。
认真读完这篇文章,并准备一台电脑跟我一起操作,我相信你会对 Kafka 源码环境搭建以及全景图剖析以及源码剖析整体路线,有更加深刻的理解。
这篇文章干货很多,希望你可以耐心读完。
01 总体概述
平常我们在基于 Kafka 做应用开发的时候,可能只是将 Kafka 作为一个消息系统来存取消息、抗高并发以及解耦系统,并不会接触到源码层面的知识。但是大家在使用或者运维 Kafka 时或多或少会遇到一些棘手的生产故障问题,如果你不了解 Kafka 源码层面的实现原理,那么在实际开发中排查问题故障点肯定会受到阻碍。因此解决问题的最好办法就是学习和阅读源码,这样我们可以快速掌握 「Kafka 的核心实现细节」,来帮助我们更深刻的理解 Kafka 内部设计原理,通晓高吞吐、高可用、高并发系统架构如何设计的,另外可以帮助我们快速建立性能分析、故障问题的排查定位思路和解决问题的高效方法和调优方案,减少解决问题的时间成本。
02 Kafka 源码环境搭建
版本说明
在阅读 Kafka 源码之前,首先我们要做一些环境准备工作, Kafka 官方已经更新到 3.1.0版本,但是从 2.8.0 版本开始就去掉了 ZooKeeper 的依赖,生产环境使用不太稳定,因此这里我们将选用「2.7.0」版本作为源码研究的版本,后续都会以该版本来剖析源码。
环境准备
1)Kafka版本:这里我们选用2.7.0版本。
2)JDK版本:这里我们选用1.8版本,自行安装。
3)Scala版本:由于Kafka Broker 端源码是基于Scala写的,这里我们选用2.12版本, 2.13 版本刚推出不久, 暂不适合。
4)Gradle版本:这里我们选用6.6版本,使用此来安装 kafka 源码环境。
5)Zookeeper版本:这里我们选用最新版3.6.3版本。
环境搭建
01
Scala 环境搭建
https://www.scala-lang.org/download/2.12.8.html
https://docs.scala-lang.org/zh-cn/tutorials/scala-for-java-programmers.html
https://www.runoob.com/scala/scala-tutorial.html
下载并解压如下:
wget https://downloads.lightbend.com/scala/2.12.8/scala-2.12.8.tgz
开始配置 Scala 环境变量(以Ubuntu系统为例):
sudo vim /etc/profile
# 配置scala安装路径及环境变量
SCALA_HOME=/home/wangjianghua/src/scala-2.12.8
export SCALA_HOME
export PATH=$PATH:$SCALA_HOME/bin
# 使其生效
source /etc/profile
# 验证scala环境是否生效
scala -version
出现下面提示,说明scala环境搭建成功:
02
Gradle 环境搭建
https://services.gradle.org/distributions/
安装包说明:
gradle-x.x-bin.zip: 安装发布版
gradle-x.x-src.zip: 源码版
gradle-x.x-all.zip: 全部文件版