- 👏作者简介:大家好,我是爱敲代码的小黄,独角兽企业的Java开发工程师,Java领域新星创作者。
- 📝个人公众号:爱敲代码的小黄(回复 “技术书籍” 可获千本电子书籍)
- 📕系列专栏:Java设计模式、数据结构和算法、Kafka从入门到成神、Kafka从成神到升仙
- 📧如果文章知识点有错误的地方,请指正!和大家一起学习,一起进步👀
- 🔥如果感觉博主的文章还不错的话,请👍三连支持👍一下博主哦
- 🍂博主正在努力完成2022计划中:以梦为马,扬帆起航,2022追梦人
文章目录
- 一、引言
- 二、前期准备
- 1. 安装 JDK1.8
- 2. 安装Zookeeper
- 3. 安装 Gradle
- 4. 安装 scala
- 二、Kafka 源码构建
- 三、配置kafka
- 四、启动 Kafka
- 1. 启动 Zookeeper
- 2. 启动服务端
- 3. 启动客户端
往期推荐
- 【Kafka从入门到成神系列 一】Kafka基本概述和架构
- 【Kafka从入门到成神系列 二】Kafka集群参数配置
- 【Kafka从入门到成神系列 三】Kafka 生产者消息分区及压缩算法
- 【Kafka从入门到成神系列 四】Kafka 消息丢失及 TCP 管理
- 【Kafka从入门到成神系列 五】Kafka 幂等性及事务
- 【Kafka从入门到成神系列 六】Kafka 消费组及重平衡
- 【Kafka从入门到成神系列 七】Kafka 位移主题
- 【Kafka从入门到成神系列 八】Kafka 多线程消费者及TCP连接
- 【Kafka从入门到成神系列 番外篇】kafka的副本同步机制
一、引言
初学一个技术,怎么了解该技术的源码至关重要。
对我而言,最佳的阅读源码的方式,那就是:不求甚解,观其大略
你如果进到庐山里头,二话不说,蹲下头来,弯下腰,就对着某棵树某棵小草猛研究而不是说先把庐山的整体脉络研究清楚了,那么你的学习方法肯定效率巨低而且特别痛苦。
最重要的还是慢慢地打击你的积极性,说我的学习怎么那么不 happy 啊,怎么那么没劲那,因为你的学习方法错了,大体读明白,先拿来用,用着用着,很多道理你就明白了。
先从整体上把关源码,再去扣一些细节问题。
举个简单的例子:
如果你刚接触 HashMap,你刚有兴趣去看其源码,在看 HashMap 的时候,有一个知识:当链表长度达到 8 之后,就变为了红黑树,小于 6 就变成了链表,当然,还和当前的长度有关。
这个时候,如果你去深究红黑树、为什么是 8 不是别的,又去查 泊松分布,最终会慢慢的搞死自己。
所以,正确的做法,我们先把这一部分给略过去,知道这个概念即可,等后面我们把整个庐山看完之后,再回过头抠细节。
当然,本章我们不会讲述一些知识,重点在于 Kafka源码环境的搭建
二、前期准备
本文所有下载文件均可在公众号回复:Kafka源码环境,即可获得所有的下载文件
1. 安装 JDK1.8
这个就不介绍了,既然你能看到这篇文章,想必你一定安装完了 JDK1.8
2. 安装Zookeeper
这里选择的 Zookeeper
版本为 3.4.9
下载地址:https://mirrors.cnnic.cn/apache/zookeeper/
建议安装目录:D:\zookeeper-3.4.9
将在 D:\zookeeper-3.4.9\conf
中把 zoo_sample.cfg
修改为 zoo.cfg
文件,内容做以下修改:
tickTime=2000
initLimit=10
syncLimit=5
dataDir=D:\\zookeeper-3.4.9\\data
dataLogDir=D:\\zookeeper-3.4.9\\log
clientPort=2181
最后 cmd
进入 D:\zookeeper-3.4.9\bin
的目录,执行 zkServer.cmd
即可启动 Zookeeper
我们可执行 zkCli.cmd
输入一些命令,进行验证:create /kafka 123
3. 安装 Gradle
这里选择的 Gradle
的版本是 4.10.3
下载地址:https://gradle.org/releases/
建议安装目录:D:\gradle-4.10.3-all\gradle-4.10.3
配置环境变量:
GRADLE_HOME = D:\gradle-4.10.3-all\gradle-4.10.3
path = D:\gradle-4.10.3-all\gradle-4.10.3\bin
**验证:**在 cmd
输入 gradle -v
显示版本号既安装成功
4. 安装 scala
这里选择的 scala
的版本是 2.12.11
下载地址:https://www.scala-lang.org/download/
建议安装目录:D:\scala
配置环境变量:
SCALA_HOME = D:\scala
Path = %SCALA_HOME%\bin
**验证:**在 cmd
输入 scala
显示版本号既安装成功
二、Kafka 源码构建
1. 源码下载
这里选择的 kafka
的版本是 0.10.0.1
下载地址:http://kafka.apache.org/
建议安装目录:D:\kafka-0.10.0.1-src
通过 cmd
请求进入该目录,执行 gradle idea
命令进行构建。
加快速度:
mavenLocal()maven {url "http://maven.aliyun.com/nexus/content/groups/public/"}
2. 问题解决
不出意外的话,应该会报错如下的错误:
[root@bigdata01 kafka-0.10.0.0-src]# gradle idea
Starting a Gradle Daemon (subsequent builds will be faster)
Building project 'core' with Scala version 2.10.6FAILURE: Build failed with an exception.* Where:
Build file 'kafka-0.10.0.1-src/build.gradle' line: 233* What went wrong:
A problem occurred evaluating root project 'kafka-0.10.0.1-src'.
> Failed to apply plugin [class 'org.gradle.api.plugins.scala.ScalaBasePlugin']> No such property: useAnt for class: org.gradle.api.tasks.scala.ScalaCompileOptions* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.BUILD FAILED
简单来说,我们 kafka-0.10.0.1-src/build.gradle
这个文件,缺失了一些东西,需要进行补充。
将下面的信息添加到 kafka-0.10.0.1-src/build.gradle
文件中,即可编译成功。
ScalaCompileOptions.metaClass.daemonServer = true
ScalaCompileOptions.metaClass.fork = true
ScalaCompileOptions.metaClass.useAnt = false
ScalaCompileOptions.metaClass.useCompileDaemon = false
3. 编译成功
这里等待的时间可能会稍长,在 10min~90min
不等,等编译完成后,我们就可以使用了。
三、配置kafka
1. 日志的修改
将我们的 log4j.properties
的日志文件配置移动到我们 core/src/main/scala
中的 resources
中。如下图所示:
2. 服务端
服务端的配置如下:
3. 客户端
客户端主要包括我们的生产者和消费者
3.1 生产者
生产者的配置如下:
3.2 消费者
消费者的配置如下:
四、启动 Kafka
1. 启动 Zookeeper
- 启动
D:\zookeeper-3.4.9\bin
中的 zkServer.cmd
- 启动
D:\zookeeper-3.4.9\bin
中的 zkCli.cmd
。建议使用 ls /
来验证当前的 zookeeper
是否成功
2. 启动服务端
启动我们刚刚的 Kafka
,出现如下证明服务端启动成功。
3. 启动客户端
3.1 生产者
3.2 消费者
3.3 消息发送
当我们在 Producer
中输入 hello world
时,我们的消费端会显示 hello world
- 生产者
- 消费者