欢迎访问昆山宝鼎软件有限公司网站! 设为首页 | 网站地图 | XML | RSS订阅 | 宝鼎邮箱 | 后台管理


新闻资讯

MENU

软件开发知识
原文出处: 刘正阳

配景

kafka也算有两年了,用它做了不少项目,可是之前对它的认识也仅仅逗留在一些从其他处所听到的观念和官方文档的documentation上在碰着一些问题时往往不知道其道理只能凭据耳食之闻的观念来领略。既然kafka可以或许成为这么多公司的选择必定有很不错的实现,昆山软件开发,昆山软件开发,所以照旧要翻阅代码一看毕竟,一来进修别人的代码二来可以或许对kafka有更深入的相识。当前版本是0.11.0。

情况搭建

git clone https://github.com/apache/kafka
cd kafka
./gradlew idea

然后用idea导入就可以了。
打开后可以看到许多module,不外server的实现是在core模块里,这也是需要着重相识的处所。

debug

研究工程代码照旧从debug开始较量好,kafka很友好的最外层放了一个Kafka.scala文件,main要领就在内里,不外在开始之前需要给main设置debug configuration。
把server.properties的路经加到program arguments,以及在enviroment里添加一个log4j.properties设置,这里我是从test里copy了一个到score/src/resources目次下,成立了resources目次。

cd到bin目次, 建设一个zookeeper server

./zookeeper-server-start.sh ../config/zookeeper.properties

然后就可以愉快的打断点debug了。
在启动进程完成后,可以用bin里的producer、consumer example来触发出产消费的逻辑。

目次先容

clients模块是用于Java应用的出产者、消费者的客户端代码
core模块是kafka server也就是kafka cluster的代码
core module里分了一些package,我们可以从它们的名字和内里的package.html(假如有的话)或许看出这个package的用途。

  • admin 提供打点成果
  • api
  • cluster 集群相关的代码,昆山软件开发,内里包罗了Partition、Replica等
  • common 一些常用的民众类,又欠好起包名字的:)
  • consumer 消费者代码,已经deprecated,而且挪到clients模块里了
  • controller
  • coordinator
  • javaapi
  • log log打点模块, log是kafka中存储动静的方法,可以参考The log这边文章查察更多
  • message 界说了Message,也就是message queue中的message…,尚有压缩
  • metrics kafka监控统计
  • network 网络层的处理惩罚,nio的一层封装
  • producer 出产者api,也已经迁移到clients module了。
  • security 权限打点
  • serializer 界说Encoder和Decoer接口和一些基本的如String、Long的实现
  • server kafka server的主要实现逻辑
  • tools 各类可以独立运行的东西,
  • utils 各类东西类
  • 整体思路

    整体思路上来讲,我们凭据处事端和客户端来别离讲。但愿读者不被绕晕

    推荐的书/资源

  • https://kafka.apache.org/documentation/
  • kafka-definitive-guide-complete