Kafka是一个优秀的发布订阅消息系统,因其高吞吐量特点被广泛运用,所以有必要对其进行研究学习。选用的版本是Kafka2.0,
我对kafka运用经验不足,工程经验欠缺。所以学习kafka,对学习过程做一些总结贴出来,一方面给学习的胖友一个参考,另一方面也受着广大胖友的检验。同步GitHub地址kafka-clients-2.0.0源码注释,如果对你有帮助希望给个star。
博客中发现问题可立即指出来。也可以在githup上指出来。
一些说明:
1、源码的来源和版本:
源码使用的是kafka-clients-2.0.0maven依赖解压过来的。因为在kafka的githup上没有对client进行单独维护。[见apache-kafka]
2、内容规划
produer篇 consumer篇 broker篇,spring-kafka篇
分开的原因,我现在producer快看完了,觉得涉及内容很多,所以准备分开整理。
其中produer篇和consumer篇都会对源码进行分析,kafka配置非常多,produer配置有60来个,也会对大部分配置进行说明和源码分析。
broker只是总结一些配置使用和一些原理机制文字总结。因为我不熟悉Scala语法,也没有那么大的精力。
因为使用上基本还是使用Spring Kafka Support,对kafka进行操作,也会做分析。
博客量总计预计70篇以上。
3、计划进度
java版的client,我使用插件统计了下共9万多行代码。出去注释空行代码在5万行左右,代码比较多,差不多dubbo的源码量。但是仍然会在主要和重要的流程上做充分解读。但是因为一般组件源码比较抽象,所以进度会比较慢,目前producer已接近完成。等待总结发布。后期一周产出2篇左右。
4、知识点
client与broker之间的通信使用的是nio,我虽然搞过基于netty的开发,但也止于使用。对nio掌握程度有限。kafka网络通信的内核采用原生nio书写,各种封装和操作各种队列处理,这块很复杂,这块知识难免疏漏,如果发现有不正确地方希望能指出来,共同进步。