1.基础概述
在对Kafka使用层面掌握后,进一步提升分析其源码是极有必要的。纵观Kafka源码工程结构,不算太复杂,代码量也不算大。分析研究其实现细节难度不算太大。今天笔者给大家分析的是其核心处理模块,core模块。
https://www.mail-archive.com/dev@kafka.apache.org/
如果提交代码 看这里的规范
http://kafka.apache.org/contributing.html
2.内容
首先,我们需要对Kafka的工程结构有一个整体的认知度,Kafka 大家最为熟悉的就是其消费者与生产者。然其,底层的存储机制,选举机制,备份机制等实现细节,需要我们对其源码仔细阅读学习,思考与分析其设计之初的初衷。下面,我们首先来看看Kafka源码工程模块分布, Github 上的 Kafka 源码版本为:0.11.0,其工程分布结构如下图所示:
3.源码环境
阅读Kafka源码需要准备以下环境:
- JDK
- IDE(Eclipse,IDEA或者其他)
gradle
关于环境的搭建,大家可以利用搜索引擎去完成,比较基础,这里就不多赘述了。然后在源码工程目录下执行以下命令:
gradle idea(编辑器为IDEA)
gradle eclipse(编辑器为Eclipse)
如何选择,可按照自己所使用的编辑器即可。这里笔者所使用的是IDEA,执行命令后,会在源码目录生成以下文件,如下图所示:
4.运行源码
这里,我们先在config模块下设置server.properties文件,按照自己的需要设置,比如分区数,log的存储路径,zookeeper的地址设置等等。然后,我们在编辑器中的运行中设置相关的启动参数,如下图所示:
如图bug 在配置里添加如下代码
vm option:
-Xms512M -Xmx1024M -Xss1M -XX:+CMSClassUnloadingEnabled -Dlog4j.configuration=file:/Users/sunzhenya/Work/spark/souceCode/kafka/core/src/main/resources/log4j.properties -Dkafka.logs.dir=/Users/sunzhenya/Work/spark/kafka/logs
-Dlog4j.debug=config/log4j.properties
program arguments:
config/server.properties
启动步骤 先启动如下代码
bin/zookeeper-server-start.sh config/zookeeper.properties
5 运行结果
6 总结
本地启动运行代码 下篇分析 server-start 启动方式