【Kafka从成神到升仙系列 一】Kafka源码环境搭建

奋斗吧
奋斗吧
擅长邻域:未填写

标签: 【Kafka从成神到升仙系列 一】Kafka源码环境搭建 Python博客 51CTO博客

2023-05-24 18:24:13 221浏览

【Kafka从成神到升仙系列 一】Kafka源码环境搭建,?作者简介:大家好,我是爱敲代码的小黄,独角兽企业的Java开发工程师,Java领域新星创作者。?个人公众号:爱敲代码的小黄?博主正在努力完成2022计划中:以梦为马,扬帆起航,2022追梦人文章目录一、引言二、前期准备1.安装JDK1.82.安装Zookeeper3.安装Gradle4.安装scala二、Kafka源码构建1.源码下载2.问题解决3.编译成功三、配置ka


  • ?作者简介:大家好,我是爱敲代码的小黄,独角兽企业的Java开发工程师,Java领域新星创作者。
  • ?个人公众号:爱敲代码的小黄
  • ?博主正在努力完成2022计划中:以梦为马,扬帆起航,2022追梦人

文章目录

  • 一、引言
  • 二、前期准备
  • 1. 安装 JDK1.8
  • 2. 安装Zookeeper
  • 3. 安装 Gradle
  • 4. 安装 scala
  • 二、Kafka 源码构建
  • 1. 源码下载
  • 2. 问题解决
  • 3. 编译成功
  • 三、配置kafka
  • 1. 日志的修改
  • 2. 服务端
  • 3. 客户端
  • 3.1 生产者
  • 3.2 消费者
  • 四、启动 Kafka
  • 1. 启动 Zookeeper
  • 2. 启动服务端
  • 3. 启动客户端
  • 3.1 生产者
  • 3.2 消费者
  • 3.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 文件,内容做以下修改:

# The number of milliseconds of each tick
tickTime=2000
# The number of ticks that the initial 
# synchronization phase can take
initLimit=10
# The number of ticks that can pass between 
# sending a request and getting an acknowledgement
syncLimit=5
# the directory where the snapshot is stored.
# do not use /tmp for storage, /tmp here is just 
# example sakes.
dataDir=D:\\zookeeper-3.4.9\\data
dataLogDir=D:\\zookeeper-3.4.9\\log
# the port at which the clients will connect
clientPort=2181
# the maximum number of client connections.
# increase this if you need to handle more clients
#maxClientCnxns=60
#
# Be sure to read the maintenance section of the 
# administrator guide before turning on autopurge.
#
# http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance
#
# The number of snapshots to retain in dataDir
#autopurge.snapRetainCount=3
# Purge task interval in hours
# Set to "0" to disable auto purge feature
#autopurge.purgeInterval=1

最后 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.6

FAILURE: 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 中。如下图所示:

【Kafka从成神到升仙系列 一】Kafka源码环境搭建_java

2. 服务端

服务端的配置如下:

【Kafka从成神到升仙系列 一】Kafka源码环境搭建_算法_02

3. 客户端

客户端主要包括我们的生产者和消费者

3.1 生产者

生产者的配置如下:

【Kafka从成神到升仙系列 一】Kafka源码环境搭建_leetcode_03

3.2 消费者

消费者的配置如下:

【Kafka从成神到升仙系列 一】Kafka源码环境搭建_leetcode_04

四、启动 Kafka

1. 启动 Zookeeper

  • 启动 D:\zookeeper-3.4.9\bin 中的 zkServer.cmd
  • 【Kafka从成神到升仙系列 一】Kafka源码环境搭建_kafka_05


  • 启动 D:\zookeeper-3.4.9\bin 中的 zkCli.cmd建议使用 ls / 来验证当前的 zookeeper 是否成功

2. 启动服务端

启动我们刚刚的 Kafka,出现如下证明服务端启动成功。

【Kafka从成神到升仙系列 一】Kafka源码环境搭建_leetcode_06

3. 启动客户端

3.1 生产者

【Kafka从成神到升仙系列 一】Kafka源码环境搭建_算法_07

3.2 消费者

【Kafka从成神到升仙系列 一】Kafka源码环境搭建_tcp/ip_08

3.3 消息发送

当我们在 Producer 中输入 hello world 时,我们的消费端会显示 hello world

  • 生产者
  • 消费者



好博客就要一起分享哦!分享海报

此处可发布评论

评论(0展开评论

暂无评论,快来写一下吧

展开评论

您可能感兴趣的博客

客服QQ 1913284695