β

Kafka 源码分析1 : 基础搭建和项目结构介绍

ImportNew 18 阅读
原文出处: 刘正阳

背景

从kafka也算有两年了,用它做了不少项目,但是之前对它的认识也仅仅停留在一些从其他地方听到的概念和官方文档的documentation上在遇到一些问题时往往不知道其原理只能按照道听途说的概念来理解。既然kafka能够成为这么多公司的选择肯定有很不错的实现,所以还是要翻阅代码一看究竟,一来学习别人的代码二来能够对kafka有更深入的了解。当前版本是0.11.0。

环境搭建

git clone https://github.com/apache/kafka
cd kafka
./gradlew idea

然后用idea导入就可以了。
打开后可以看到很多module,不过server的实现是在core模块里,这也是需要着重了解的地方。

debug

研究工程代码还是从debug开始比较好,kafka很友好的最外层放了一个Kafka.scala文件,main方法就在里面,不过在开始之前需要给main配置debug configuration。
把server.properties的路经加到program arguments,以及在enviroment里添加一个log4j.properties配置,这里我是从test里copy了一个到score/src/resources目录下,建立了resources目录。

kafka-debug-config

cd到bin目录, 创建一个zookeeper server

./zookeeper-server-start.sh ../config/zookeeper.properties

然后就可以愉快的打断点debug了。
在启动过程完成后,可以用bin里的producer、consumer example来触发生产消费的逻辑。

目录介绍

clients模块是用于Java应用的生产者、消费者的客户端代码
core模块是kafka server也就是kafka cluster的代码
core module里分了一些package,我们可以从它们的名字和里面的package.html(如果有的话)大概看出这个package的用途。

整体思路

整体思路上来讲,我们按照服务端和客户端来分别讲。希望读者不被绕晕

推荐的书/资源

作者:ImportNew
原文地址:Kafka 源码分析1 : 基础搭建和项目结构介绍, 感谢原作者分享。

发表评论