Files
KnowStreaming/docs/zh/Kafka分享/Kafka开发环境搭建/Kafka开发环境搭建.md
2023-02-14 14:57:39 +08:00

5.0 KiB
Raw Blame History

Kafka 本地开发环境搭建

[TOC]

1、环境准备

本地开发环境搭建之前,需要准备好如下环境。

  • JDK 11
  • IDEA 2020.x
  • Gradle 5.5.1
  • Zookeeper

2、开发环境配置

环境准备好之后,我们便开始进行开发环境的配置。

步骤一打开工程修改IDEA的配置

修改Gradle配置 dev_change_gradle_config

修改Java Compiler配置如下图所示增加--add-exports=java.base/sun.nio.ch=ALL-UNNAMED dev_change_java_compile_config

步骤二:进行编译,生成消息协议文件

./gradlew assemble

dev_start_build

步骤三修改build.gradle文件

修改artifactory 及 开启1.8的兼容

dev_change_artifactory

dev_compatible_8

步骤四:修改启动配置

// 部分看不清的补充说明

// VM配置
// 日志输出位置、log4j配置文件位置、认证文件的位置
-Dkafka.logs.dir=logs -Dlog4j.configuration=file:config/log4j.properties -Djava.security.auth.login.config=config/kafka_server_jaas.conf 

// 参数配置
config/server.properties

dev_app_debug_config

步骤五:开始编译

点击IDEA正上方绿色的类似锤子的按钮,开始进行编译。

编译中: kb_kafka_engine_dev_env

编译完成: dev_finished_compile

步骤六配置Kafka配置文件 在步骤三中我们设置了Kafka本地启动涉及到的server.propertieslog4j.properties等文件,这里需要修改的主要是server.properties

// server.properties 中主要需要修改的配置
zookeeper.connect=xxxx
gateway.url=xxxx
cluster.id=xxxx

// 其他相关的配置可按需进行调整

server.properties配置 dev_server_properties

log4j.properties配置 dev_log4j_properties

步骤七启动Kafka

dev_start_kafka

至此Kafka本地开发环境便搭建完成了。

3、日常命令

// 编译
./gradlew assemble

// 打包打包完成之后会在core/build/distributions生成打包之后的.tgz文件
./gradlew clean releaseTarGz

// 更多具体的命令可以看2.5版本源码包里面的cmd.txt文件

4、Kafka 工程代码结构

主要代码在clientscore这两个地方。clients主要是Java客户端代码。core是Kafka服务端代码也是最重要的代码。

本次主要介绍一下core模块,clients模块会在后续进行介绍。core模块主要有两部分代码,一部分是社区原生的代码,还有一部分是我们滴滴加入的一些代码。

4.1 Kafka-Core

这部分core模块里面主要是原生的kafka scala代码。

首先看一下图: kafka-core

  模块的说明:

模块 说明
admin 管理员运维操作相关模块
api 该模块主要负责交互数据的组装,客户端与服务端交互数据编解码
cluster Cluster、broker等几个实体类
common 通用模块,主要是异常类和错误验证
contoroller Controller相关模块
coordinator 消费的Coordinator和事物的Coordinator
log Kafka文件存储模块
metrics 监控指标metrics模块
network 网络事件处理模块
security 安全模块
server 服务端主模块,业务请求处理入口
tools/utils 工具相关模块
zk/zookeeper ZK相关模块

 

4.2 Kafka-Core-DiDi

这部分core模块里面主要是我们滴滴扩展的kafka java代码。

首先看一下图:

kafka-core-didi

  模块的说明:

模块 说明
cache 缓存模块,主要缓存权限和用户信息并进行同步等
config 配置模块
jmx jmx相关模块
metrics 滴滴Kafka特有的指标
partition 旧版的分区禁用模块,代码基本废弃了
report 上报模块主要上报Topic连接信息
security 安全管控模块
server 服务端能力增强模块,包括磁盘过载保护等
util 工具类

5、环境搭建问题记录

  1. 启动程序报错:
    Error:scalac: jvm-11 is not a valid choice for -target和scalac: bad option: -target:jvm-11
    解决办法:
    1. 项目的根目录下找到.idea文件夹
    2. 找到文件夹中scala_compiler.xml文件
    3. 注释掉其中的<parameter value="-target:jvm-11"
    4. 最后重启IDEA即可

6、总结

本次介绍了Kafka本地开发环境的搭建以及Kafka相关模块的说明。有兴趣的同学可以尝试着搭建一套本地开发环境方便后续的学习、日常的开发及问题的定位等。