kafka实践四:使用IDEA阅读Kafka源码

工作内容涉及Kafka的部署、优化、实战,当前集群业务数据规模达到400亿条/天,对Kafka特性有一定了解,想进一步学习Kafka的工作原理则需要系统学习其基础模块,因此想使用IDEA配置Kafka源码分析;

步骤1:安装配置JAVA,JDK版本至少为1.7,最好是1.8及以上,配置环境变量后使用java -version命令来查看当前JDK的版本;

步骤2:配置SCALA,Kafka源码使用SCALA编写,配置同JAVA配置一样,下载地址为:http://www.scala-lang.org/download/all.html,解压后配置SCALA_HOME环境变量即可;

步骤3:配置gradle,下载地址为:https://gradle.org/releases/,一般只需要将下载的包解压,同JAVA配置一样,设置GRADLE_HOME环境变量即可,然后可以使用gradle -v命令来验证Gradle是否已经配置完成;

步骤4:下载Kafka的src包(源码包非二进制包),下载地址为:http://kafka.apache.org/downloads,将下载的压缩包解压,并在Kafka的根目录执行gradle idea命令进行构建,可能出现一下问题:

① scala版本问题:kafka的src包下的gradle.properties文件中指定了scala的版本,请确保指定的版本同下载配置的scala版本一致,不然后续会出现问题;

② maven仓库问题:如果出现类似的报错,说明引入maven包有问题;

修改kafka的路径下的build.gradle文件,修改maven仓库的下载地址即可:

buildscript {
    repositories {
        maven{ url 'http://maven.aliyun.com/nexus/content/groups/public/'}
    }
}

allprojects {
    repositories {
        maven{ url 'http://maven.aliyun.com/nexus/content/groups/public/'}
    }
}

步骤5:将Kafka导入到IDEA,project from existing source引入kafka的src包;

模块名  说明
admin  kafka的管理员模块,操作和管理其topicpartition相关,包含创建,删除topic,或者拓展分区等。
api  主要负责数据交互,客户端与服务端交互数据的编码与解码。
cluster  这里包含多个实体类,有BrokerClusterPartitionReplica。其中一个Cluster由多个Broker组成,一个Broker包含多个Partition,一个Topic的所有Partition分布在不同的Broker中,一个Replica包含都个Partition
common  这是一个通用模块,其只包含各种异常类以及错误验证。
consumer  消费者处理模块,负责所有的客户端消费者数据和逻辑处理。
controller  此模块负责中央控制器的选举,分区的Leader选举,Replica的分配或其重新分配,分区和副本的扩容等。
coordinator  负责管理部分consumer group和他们的offset
log  这是一个负责Kafka文件存储模块,负责读写所有的KafkaTopic消息数据。
message  封装多条数据组成一个数据集或者压缩数据集。
metrics  负责内部状态的监控模块。
network  该模块负责处理和接收客户端连接,处理网络时间模块。
security  负责Kafka的安全验证和管理模块。
serializer  序列化和反序列化当前消息内容。
server  该模块涉及的内容较多,有LeaderOffsetcheckpoint,动态配置,延时创建和删除TopicLeader的选举,AdminReplica的管理,以及各种元数据的缓存等内容。
tools  阅读该模块,就是一个工具模块,涉及的内容也比较多。有导出对应consumeroffset值;导出LogSegments信息,以及当前Topiclog写的Location信息;导出Zookeeper上的offset值等内容。
utils  各种工具类,比如JsonZkUtils,线程池工具类,KafkaScheduler公共调度器类,Mx4jLoader监控加载器,ReplicationUtils复制集工具类,CommandLineUtils命令行工具类,以及公共日志类等内容。
发布了62 篇原创文章 · 获赞 158 · 访问量 32万+

猜你喜欢

转载自blog.csdn.net/yezonggang/article/details/98212267