kafka源码阅读---源码项目结构
目录
介绍:
了解kafka项目的目录结构,才能去更好的阅读kafka源码,我觉得我们重点关注其中两个目录下源码就行了,他们分别是client 目录和core目录,client目录下类是java语言开发,实现了消费者和生产者功能,core目录下类是scala语言开发,实现了集群管理,分区副本管理,消息存储和消息获取,网络通信等功能。
一.client 包
下面是kafka项目目录结构,clients 包下面是生产者producer 和消费者consumer的代码。如果要看kafka是如何发送消息和消费消息的,可以看这个包下的源码 。重点关注KafkaProducer 和KafkaConsumer这两个类。
二 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 工具类