Kafka 源码剖析(一)

1.基础概述

在对Kafka使用层面掌握后,进一步提升分析其源码是极有必要的。纵观Kafka源码工程结构,不算太复杂,代码量也不算大。分析研究其实现细节难度不算太大。今天笔者给大家分析的是其核心处理模块,core模块。

https://www.mail-archive.com/[email protected]/

如果提交代码 看这里的规范

http://kafka.apache.org/contributing.html

2.内容

首先,我们需要对Kafka的工程结构有一个整体的认知度,Kafka 大家最为熟悉的就是其消费者与生产者。然其,底层的存储机制,选举机制,备份机制等实现细节,需要我们对其源码仔细阅读学习,思考与分析其设计之初的初衷。下面,我们首先来看看Kafka源码工程模块分布, Github 上的 Kafka 源码版本为:0.11.0,其工程分布结构如下图所示:

Kafka 源码剖析(一)_第1张图片
WechatIMG42.jpeg
Kafka 源码剖析(一)_第2张图片
WechatIMG46.jpeg
Kafka 源码剖析(一)_第3张图片
WechatIMG47.jpeg

3.源码环境

阅读Kafka源码需要准备以下环境:

  • JDK
  • IDE(Eclipse,IDEA或者其他)
  • gradle

关于环境的搭建,大家可以利用搜索引擎去完成,比较基础,这里就不多赘述了。然后在源码工程目录下执行以下命令:

  • gradle idea(编辑器为IDEA)
  • gradle eclipse(编辑器为Eclipse)

如何选择,可按照自己所使用的编辑器即可。这里笔者所使用的是IDEA,执行命令后,会在源码目录生成以下文件,如下图所示:


Kafka 源码剖析(一)_第4张图片
WechatIMG43.jpeg

4.运行源码

这里,我们先在config模块下设置server.properties文件,按照自己的需要设置,比如分区数,log的存储路径,zookeeper的地址设置等等。然后,我们在编辑器中的运行中设置相关的启动参数,如下图所示:

Kafka 源码剖析(一)_第5张图片
WechatIMG44.jpeg
Kafka 源码剖析(一)_第6张图片
WechatIMG45.jpeg

如图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 运行结果

Kafka 源码剖析(一)_第7张图片
image.png

6 总结

本地启动运行代码 下篇分析 server-start 启动方式

你可能感兴趣的:(Kafka 源码剖析(一))