专栏首页微服务生态Kafka整体结构以及模块分析

Kafka整体结构以及模块分析

一、Kafka源代码的工程结构

如下图所示:

二、各模板简要说明

Xml代码

admin:管理员模块,操作和管理topic,paritions相关,包含create,delete topic,扩展patitions

Api:该模块主要负责交互数据的组装,客户端与服务端交互数据编解码

client:该模块比较简单就一个类,Producer读取kafka broker元数据信息topic和partitions,以及leader

cluster:该模块包含几个实体类,Broker,Cluster,Partition,Replica,解释他们之间关系:

Cluster由多个broker组成,一个Broker包含多个partition,一个topic的所有

partitions分布在不同broker的中,一个Replica包含多个Partition。

common:通用模块,只包含异常类和错误验证

consumer:consumer处理模块,负责所有客户端消费者数据和逻辑处理

contoroller:负责中央控制器选举,partition的leader选举,副本分配,副本重新分配,partition和replica扩容。

javaapi:提供java的producer和consumer接口api

log:Kafka文件存储模块,负责读写所有kafka的topic消息数据。

message:封装多个消息组成一个“消息集”或压缩消息集。

metrics:内部状态的监控模块

network:网络事件处理模块,负责处理和接收客户端连接

producer:producer实现模块,包括同步和异步发送消息。

serializer:序列化或反序列化当前消息

kafka:kafka门面入口类,副本管理,topic配置管理,leader选举实现(由contoroller模块调用)。

tools:一看这就是工具模块,包含内容比较多:

a.导出对应consumer的offset值.

b.导出LogSegments信息,当前topic的log写的位置信息.

c.导出zk上所有consumer的offset值.

d.修改注册在zk的consumer的offset值.

f.producer和consumer的使用例子.

utils:Json工具类,Zkutils工具类,Utils创建线程工具类,KafkaScheduler公共调度器类,公共日志类等等。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 分布式调用链监控资源总结

    http://bigbully.github.io/Dapper-translation/

    小程故事多
  • 作为一名基层管理者如何利用情商管理自己和团队(二)

    上一篇我们讲的是情商的五要素以及什么是三无管理者,本文将继续探讨,三无管理者如何进行团队的管理。(作为一名基层管理者如何利用情商管理自己和团队(一))

    小程故事多
  • 跟我学Kafka之zookeeper的存储结构

    当我们kafka启动运行以后,就会在zookeeper上初始化kafka相关数据,主要包括六大类:

    小程故事多
  • GitChat即将出炉,内容提前预告!

    Shawn前段时间一时心血来潮想尝试一下GitChat,话题是《Cocos Creator 集合类游戏模块化与热更新实践》。

    张晓衡
  • Python 模块

    模块可以被别的程序引入,以使用该模块中的函数等功能,这也是使用 python 标准库的方法。

    小麦苗DBA宝典
  • kubeedge - 消息同步框架beehive介绍

    在看kubeedge的源码过程中发现对beehive的理解不够深刻,所以又回来看了一下beehive的官方文档

    有点技术
  • Python学习手册(第4版).2

    导入和重载提供了一种自然的程序启动的选择,因为导入操作将会在最后一步执行文件。从更宏观的角度来看,模块扮演了一个工具库的角色

    云深无际
  • 041|前沿|2|未来工业4.0下的物流系统的设计思路

    上篇文章描述了工业4.0下的即插即用输送机技术的主要特征。要实现这些特征,未来的输送设备该遵从于什么样的设计思路才能实现这些特征呢?

    老King
  • AndroidStdio1_2

    Android库在结构上与Android应用模块相同。它可以提供构建应用所需的一切内容,包括源代码、资源文件和Android清单。不过,Android库将编译到...

    云深无际
  • 记录一些小技巧-CSS篇

    选中不在此范围内的元素,例如:div:not(:last-child),选中除最后一个div的所有div元素

    WahFung

扫码关注云+社区

领取腾讯云代金券