性能文章>想看kafka源码,跟我一起做 | kafka源码环境搭建>

想看kafka源码,跟我一起做 | kafka源码环境搭建原创

323623

“全文共计2295字,预计阅读时间7分钟

 

大家好,我是tin,这是我的第22篇原创文章

AD7C02F9-BB61-4AAC-ABB0-A48EDD430A72.png

kafka是一个高吞吐、低延时的消息中间件。采用Java和scala语言编写,它有着非常多的优秀设计。

要想学习讨论kafka的优秀理念,源码阅读必不可少。

今天我们开始搭建kafka环境。

JDK

kafka服务器端代码是用scala语言编写的,但同样会被编译为class文件,运行在JVM上。

JDK的安装非常简单,现在我们用的比较多的也是JDK8吧,有JDK8即可。

下面是JDK的下载地址,下载机型安装:


https://www.oracle.com/java/technologies/downloads/#java8

 

这里我们安装scala的2.3.18版本,分不同的操作系统,自行选择下载:

BA1DCD79-7C3A-44BA-B030-C2139FA94E41.png

地址:https://www.scala-lang.org/download/2.13.8.html

下载完成后进行解压,解压后需进行环境变量配置,如果是linux系统,可以通过如下命令设置:

vim /etc/profile

# 配置scala安装路径及环境变量
SCALA_HOME={scala解压包路径,比如:Users/ericli/small-workshop/workspace/scala/scala-2.13.8}
export SCALA_HOME
export PATH=$PATH:$SCALA_HOME/bin

# 重新加载配置文件,使scala配置生效
source /etc/profile

# 验证scala环境是否生效
scala -version

 

gradle

kafka代码通过gradle管理的,目前gradle的最新release版本是v7.4.2。

6075DB40-BAC3-42D3-AB3C-9236FAA20A98.png

链接地址:https://gradle.org/releases/

下载完成后,同样,进行解压,解压后再设置环境变量配置,比如如果是linux系统,可以通过如下命令设置:

vim /etc/profile

# 配置gradle安装路径及环境变量
GRADLE_HOME={gradle解压包路径,比如:Users/ericli/small-workshop/tools/gradle-7.4.2}
export GRADLE_HOME
export PATH=$PATH:$GRADLE_HOME/bin

# 重新加载配置文件,使gradle配置生效
source /etc/profile

# 验证gradle环境是否生效
gradle -v

 

安装成功后,可以查看gradle的版本信息。

A38DC65E-7825-4355-A621-892092A35377.png

这里补一句,gradle和maven同作为Java项目自动构建工具,gradle似乎更优秀一些(虽然我们很多项目还是用的maven)。

6742DF96-B709-4D65-BC40-2319C8D95064.png

从代码简洁上来说,gradle也是比maven更让人满意。

gradle三行代码搞定的事情:

dependencies {
    compile('org.springframework:spring-core:2.5.6')
}

maven需要七行:

<dependencies>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-core</artifactId>
            <version>2.5.6</version>
        </dependency>
</dependencies>

 

kafka源码

安装完JDK、scala、gradle等依赖后,我们就可以正式开始搭建kafka的源码环境了。

1. 拉取源码库

kafka开源项目库:
https://github.com/apache/kafka.git

目前kafka最新版本是3.2,我们下载3.2版本的源码。

 

可以考虑 Fork 下开源库,自己读源码会有一些自己的理解,加一些笔记,Fork出来的自己的仓库,方便自由的提交

 

9D5A380C-EABB-433A-8EE8-4FBF5B288907.png


下载完成后,切到3.2.0版本:

3422B117-DA3C-4B54-A7F8-DB4000AC9123.png

IDEA打开kafka源码包,第一步要做的就是修改build.gradle文件。

因为 gradle支持使用maven依赖,所以我们可以使用阿里云的maven镜像 https://maven.aliyun.com/nexus/content/groups/public/。如下图所示:

EDE078B1-D4CB-4371-B268-642B9AFBE848.png

kafka真的太大了,依赖包也很多,加阿里镜像可以加快拉取速度。

 

2. 安装scala插件

idea并未内置scala插件,所以需要去下载。

打开core包,然后在scala目录下找到Kafka .scala文件,会看到 IDEA 调试 "Plugins supporting *.scala files found",我们点击"install plugins"进行安装。

EC5E774A-EF76-4BD1-A8CD-F90AD7642D44.png

安装完成插件,重启idea即生效。

除此之外,在gradle.properties文件中把scalaVersion设置为本地安装的scala版本:

 

3. 启动kafka broker

Debug 运行 kafka.scala 类,如下图:

42D6B4F4-B242-48E5-B460-20278CF09E98.png

但是,这个时候是启动不起来的,报错如下:

CACAB203-5F96-4D1A-B43E-55B32ABAF22E.png

我们需要修改 Kafka 启动类,设置配置文件。操作如下图所示:

C4637BDD-7253-4ECC-910C-322171B33869.png

再次启动main函数:

4C2E1B1C-D0B0-4F19-981A-4383F8BB734D.png

到此,kafka启动成功!

 

结语

我是tin,一个在努力让自己变得更优秀的普通工程师。自己阅历有限、学识浅薄,如有发现文章不妥之处,非常欢迎加我提出,我一定细心推敲并加以修改。

看到这里请安排个“三连”(分享、点赞、在看)再走吧,坚持创作不容易,你的正反馈是我坚持输出的最强大动力,谢谢!

最后别忘了关注我哦!⏬⏬⏬

点赞收藏
分类:标签:
看点代码再上班
请先登录,查看2条精彩评论吧
快去登录吧,你将获得
  • 浏览更多精彩评论
  • 和开发者讨论交流,共同进步

为你推荐

JAVA使用CompletableFuture实现流水线并行处理,加速你的接口响应

JAVA使用CompletableFuture实现流水线并行处理,加速你的接口响应

讲透JAVA Stream的collect用法与原理,远比你想象的更强大

讲透JAVA Stream的collect用法与原理,远比你想象的更强大

没有二十年功力,写不出Thread.sleep(0)这一行“看似无用”的代码!

没有二十年功力,写不出Thread.sleep(0)这一行“看似无用”的代码!

【译】记一次数据库连接泄漏导致的响应迟缓

【译】记一次数据库连接泄漏导致的响应迟缓

【全网首发】微服务10:系统服务熔断、限流

【全网首发】微服务10:系统服务熔断、限流

【全网首发】MQ-消息堆积-JDK Bug导致线程阻塞案例分析

【全网首发】MQ-消息堆积-JDK Bug导致线程阻塞案例分析

3
2