目录
介绍:
了解kafka项目的目录结构,才能去更好的阅读kafka源码,下面会整体介绍一下kafka源码目录结构,然后在着重讲core 和client两个核心目录,本文是以0.11.0版本为例讲解。
一.目录结构
bin: 启动脚本;
clients:生产者和消费者代码;0.11版本是java语言开发;
config: 配置文件;
core : kafka服务实例的代码,scala语言开发,实现了集群管理,分区副本管理,消息存储和消息获取,网络通信等功能;
docs:kakfa文档
examples:生产者消费者demo 启动脚本;
streams:kafka 流相关代码;
二.core目录
这个包下是kafka核心包,有集群管理,分区管理,存储管理,副本管理,消费者组管理,网络通信,消费管理等核心类。
admin包:执行管理命令的功能;
api 包: 封装请求和响应DTO对象;
cluster包:集群对象,例如Replica 类代表一个分区副本,Partition类代表一个分区;
common包: 通用jar包;
controller包: 和kafkaController(kc)相关的类,重点模块,一个kafka集群只有一个leader kc,该kc负责 分区管理,副本管理,并保证集群信息在集群中同步;
coordinator包:组协调者相关,负责处理消费者组的代码;
log包: 磁盘存储相关,重点模块;
network包: 网络相关,重点模块,使用的是NIO,从这里可学习如何应用java 的NIO类;
consumer包,producer好多废弃类,无需关注;
server包: kafka实例的各种管理类,核心包,也是重点;
tools 工具类。
三.client目录
下面是kafka项目目录结构,clients 包下面是生产者producer 和消费者consumer的代码。如果要看kafka是如何发送消息和消费消息的,可以看这个包下的源码 。重点关注KafkaProducer 和KafkaConsumer这两个类。