Kakfa揭秘 Day3 Kafka源码概述
Kakfa揭秘 Day3
Kafka源码概述
今天开始进入Kafka的源码,本次学习基于最新的0.10.0版本进行。由于之前在学习Spark过程中积累了很多的经验和思想,这些在kafka上是通用的。
总体
首先从总体方式进行一下分析,进入最关键的core。
从源码角度看,最关键的是标红的几个模块。

admin是管理模块,主要管理Topic和Partition相关的东西。
client客户端模块,给客户端(consumer、producer、broker等的总称)提供各种支持功能。
cluster是很关键的模块,KafkaCluster-->Broker-->Partition是Kafka的基本三层物理结构。
Broker模块,在Broker上Kafka是根据topic对数据分类的,一个topic由很多partition构成,不同的partition是分布式存储的。
consumer模块,对于大多数使用者而言,这都是特别重要的部分,如果不想太深入,仅是进行功能应用,那研究这个模块收益会最多。
producer,仅次于consumer的感兴趣,可以看到里面包括sync同步和async异步两种方式。其中包涵了Partitioner,是一个trait,会有不同的算法。
controller,如果要深入底层研究,非常的关键,主要是提供选举功能,副本分配等。
message,大家需要特别关注,其中可以对消息进行压缩。
serialize,序列化。
server,里面有很多的类,是运行的核心,对运行进行控制。KafkaServer 代表了一个Kafka的broker,生命周期中所有事件都由它管理。
入口程序Kafka.scala
这个类特别特别重要,整个cluster的broker启动时,会把它作为启动类。
作为broker主要的启动类,代码非常的简洁:

这个处理大致分为三个部分:
第一步分,加载配置信息,开始进行资源初始化。
第二部分,也就是标红的代码,这个方法非常核心,当中包涵了具体的启动过程。从下面的代码可以看到,这个方法中封装了KafkaServer,是一个门面设计模式。

第三部分,在退出时注册回调,这个和spark streaming中优雅退出是一样的,在jvm退出前销毁资源。
欲知后事如何,且听下回分解!
DT大数据每天晚上20:00YY频道现场授课频道68917580
Kakfa揭秘 Day3 Kafka源码概述的更多相关文章
- Kakfa揭秘 Day9 KafkaReceiver源码解析
Kakfa揭秘 Day9 KafkaReceiver源码解析 上一节课中,谈了Direct的方式来访问kafka的Broker,今天主要来谈一下,另一种方式,也就是KafkaReceiver. 初始化 ...
- Kakfa揭秘 Day7 Producer源码解密
Kakfa揭秘 Day7 Producer源码解密 今天我们来研究下Producer.Producer的主要作用就是向Kafka的brokers发送数据.从思考角度,为了简化思考过程,可以简化为一个单 ...
- Kakfa揭秘 Day6 Consumer源码解密
Kakfa揭秘 Day6 Consumer源码解密 今天主要分析下Consumer是怎么来工作的,今天主要是例子出发,对整个过程进行刨析. 简单例子 Example中Consumer.java是一个简 ...
- Kafka源码分析(一) - 概述
系列文章目录 https://zhuanlan.zhihu.com/p/367683572 目录 系列文章目录 一. 实际问题 二. 什么是Kafka, 如何解决这些问题的 三. 基本原理 1. 基本 ...
- Spark Streaming揭秘 Day22 架构源码图解
Spark Streaming揭秘 Day22 架构源码图解 今天主要是通过图解的方式,对SparkStreaming的架构进行一下回顾. 下面这个是其官方标准的流程描述. SparkStreamin ...
- Kafka 源码剖析
1.概述 在对Kafka使用层面掌握后,进一步提升分析其源码是极有必要的.纵观Kafka源码工程结构,不算太复杂,代码量也不算大.分析研究其实现细节难度不算太大.今天笔者给大家分析的是其核心处理模块, ...
- Kafka源码分析系列-目录(收藏不迷路)
持续更新中,敬请关注! 目录 <Kafka源码分析>系列文章计划按"数据传递"的顺序写作,即:先分析生产者,其次分析Server端的数据处理,然后分析消费者,最后再补充 ...
- kafka源码分析之一server启动分析
0. 关键概念 关键概念 Concepts Function Topic 用于划分Message的逻辑概念,一个Topic可以分布在多个Broker上. Partition 是Kafka中横向扩展和一 ...
- MongoDB源码概述——内存管理和存储引擎
原文地址:http://creator.cnblogs.com/ 数据存储: 之前在介绍Journal的时候有说到为什么MongoDB会先把数据放入内存,而不是直接持久化到数据库存储文件,这与Mong ...
随机推荐
- Shlwapi.h Shlwapi.dll 动态库
Windows中有一个Shlwapi.dll文件,包含了大量的Windows字符串处理方法,这些方法,在通常的程序应用中,经常会用到,有一部分处理方法,在CRuntime中也存在,但不方便使用.有一部 ...
- vs2010 编译Qt5.2 rc1
首先要准备一些依赖: 下载Qt 5.2.0 rc版的源码 qt-everywhere-opensource-src-5.2.0-rc1.7z 并解压出来, 我的路径为D:\qt5\qt-src-5.2 ...
- 装在u盘的linux
有个8g的优盘,想利用下装linux,好久没碰Linux了,puppy Linux中文版已经不更新了,Ubuntu麒麟按部就班的跟着Ubuntu官方版的更新走,不过发现一个软件,满不错的,Ubuntu ...
- Android开发之神奇的Fading Edge,让你的View更有层次感!
最近在研究Android Framework层源码,发现我们对源码的理解应该建立在对API的理解之上,如果有一些API你没用过,那么即使你在源码中见到这个东西都不知道是干嘛的,更谈不上理解了.一直以来 ...
- [改善Java代码]避免带有变长参数的方法重载
建议4: 避免带有变长参数的方法重载 在项目和系统的开发中,为了提高方法的灵活度和可复用性,我们经常要传递不确定数量的参数到方法中,在Java 5之前常用的设计技巧就是把形参定义成Collection ...
- poj 3544 Journey with Pigs
Journey with Pigs Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 3004 Accepted: 922 ...
- (转)工作之路---记录LZ如何在两年半的时间内升为PM
原文地址:http://www.cnblogs.com/zuoxiaolong/p/life31.html 引言 之前的伪PM纠结之路已经渐渐结束,LZ也终于正式爬上了PM的位置,对于LZ来说,这个时 ...
- winform无边框拖动
[DllImport("user32.dll")] public static extern bool ReleaseCapture(); [DllImport("use ...
- C# 数据结构--单链表
什么是单链表 这两天看到很多有关单链表的面试题,对单链表都不知道是啥的我.经过学习和整理来分享一下啥是单链表和单链表的一些基本使用方法.最后看些网上有关单链表的面试题代码实例. 啥是单链表? 单链表是 ...
- OpenGL1-创建窗口(建立Win32的OpenGL开发环境 )(代码上传)
视频教程请关注 http://edu.csdn.net/lecturer/lecturer_detail?lecturer_id=440 代码下载 #pragma once #include < ...