Kakfa揭秘 Day3

Kafka源码概述

今天开始进入Kafka的源码,本次学习基于最新的0.10.0版本进行。由于之前在学习Spark过程中积累了很多的经验和思想,这些在kafka上是通用的。

总体

首先从总体方式进行一下分析,进入最关键的core。

从源码角度看,最关键的是标红的几个模块。

  1. admin是管理模块,主要管理Topic和Partition相关的东西。

  2. client客户端模块,给客户端(consumer、producer、broker等的总称)提供各种支持功能。

  3. cluster是很关键的模块,KafkaCluster-->Broker-->Partition是Kafka的基本三层物理结构。

  4. Broker模块,在Broker上Kafka是根据topic对数据分类的,一个topic由很多partition构成,不同的partition是分布式存储的。

  5. consumer模块,对于大多数使用者而言,这都是特别重要的部分,如果不想太深入,仅是进行功能应用,那研究这个模块收益会最多。

  6. producer,仅次于consumer的感兴趣,可以看到里面包括sync同步和async异步两种方式。其中包涵了Partitioner,是一个trait,会有不同的算法。

  7. controller,如果要深入底层研究,非常的关键,主要是提供选举功能,副本分配等。

  8. message,大家需要特别关注,其中可以对消息进行压缩。

  9. serialize,序列化。

  10. server,里面有很多的类,是运行的核心,对运行进行控制。KafkaServer 代表了一个Kafka的broker,生命周期中所有事件都由它管理。

入口程序Kafka.scala

这个类特别特别重要,整个cluster的broker启动时,会把它作为启动类。
作为broker主要的启动类,代码非常的简洁:

这个处理大致分为三个部分:

第一步分,加载配置信息,开始进行资源初始化。

第二部分,也就是标红的代码,这个方法非常核心,当中包涵了具体的启动过程。从下面的代码可以看到,这个方法中封装了KafkaServer,是一个门面设计模式。

第三部分,在退出时注册回调,这个和spark streaming中优雅退出是一样的,在jvm退出前销毁资源。

欲知后事如何,且听下回分解!

DT大数据每天晚上20:00YY频道现场授课频道68917580

Kakfa揭秘 Day3 Kafka源码概述的更多相关文章

  1. Kakfa揭秘 Day9 KafkaReceiver源码解析

    Kakfa揭秘 Day9 KafkaReceiver源码解析 上一节课中,谈了Direct的方式来访问kafka的Broker,今天主要来谈一下,另一种方式,也就是KafkaReceiver. 初始化 ...

  2. Kakfa揭秘 Day7 Producer源码解密

    Kakfa揭秘 Day7 Producer源码解密 今天我们来研究下Producer.Producer的主要作用就是向Kafka的brokers发送数据.从思考角度,为了简化思考过程,可以简化为一个单 ...

  3. Kakfa揭秘 Day6 Consumer源码解密

    Kakfa揭秘 Day6 Consumer源码解密 今天主要分析下Consumer是怎么来工作的,今天主要是例子出发,对整个过程进行刨析. 简单例子 Example中Consumer.java是一个简 ...

  4. Kafka源码分析(一) - 概述

    系列文章目录 https://zhuanlan.zhihu.com/p/367683572 目录 系列文章目录 一. 实际问题 二. 什么是Kafka, 如何解决这些问题的 三. 基本原理 1. 基本 ...

  5. Spark Streaming揭秘 Day22 架构源码图解

    Spark Streaming揭秘 Day22 架构源码图解 今天主要是通过图解的方式,对SparkStreaming的架构进行一下回顾. 下面这个是其官方标准的流程描述. SparkStreamin ...

  6. Kafka 源码剖析

    1.概述 在对Kafka使用层面掌握后,进一步提升分析其源码是极有必要的.纵观Kafka源码工程结构,不算太复杂,代码量也不算大.分析研究其实现细节难度不算太大.今天笔者给大家分析的是其核心处理模块, ...

  7. Kafka源码分析系列-目录(收藏不迷路)

    持续更新中,敬请关注! 目录 <Kafka源码分析>系列文章计划按"数据传递"的顺序写作,即:先分析生产者,其次分析Server端的数据处理,然后分析消费者,最后再补充 ...

  8. kafka源码分析之一server启动分析

    0. 关键概念 关键概念 Concepts Function Topic 用于划分Message的逻辑概念,一个Topic可以分布在多个Broker上. Partition 是Kafka中横向扩展和一 ...

  9. MongoDB源码概述——内存管理和存储引擎

    原文地址:http://creator.cnblogs.com/ 数据存储: 之前在介绍Journal的时候有说到为什么MongoDB会先把数据放入内存,而不是直接持久化到数据库存储文件,这与Mong ...

随机推荐

  1. 使用GPS经纬度定位附近地点(某一点范围内查询)

    需要手机查找附近N米以内的商户,致想法是已知一个中心点,一个半径,求圆包含于圆抛物线里所有的点,经纬度是一个点,半径是一个距离,不能直接加减,下面提供C#的解决方法 数据库中记录了商家在百度标注的经纬 ...

  2. 深入研究Block用weakSelf、strongSelf、@weakify、@strongify解决循环引用(下)

    深入研究Block捕获外部变量和__block实现原理 EOCNetworkFetcher.h typedef void (^EOCNetworkFetcherCompletionHandler)(N ...

  3. C#文件操作系列(一)

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.I ...

  4. Hibernate的简单示例

    首先我们新建一个项目,Java项目或者是Javaweb项目都可以,然后把hibernate需要的jar导入,我用的jar包如下: 然后新建一个实体类Teacher.java并添加get和set方法: ...

  5. reset.css(详细说明)

    @charset "utf-8";/************************************************************************ ...

  6. vs2010 MFC执行流程

    从大学时候学过到现在可能又要用到,搞这个东西真是痛苦.不过首先把繁琐的c++函数执行流程搞明白吧,好好多设置几个断点观测一下啦. Step1.在vs2010新建MFC工程,那么对应的代码页名字为:CS ...

  7. jetty-distribution-7.6.x 部署

    (1)启动 jetty 命令:java - jar start.jar 需要注意2个事项:必须使用JDK来运行jetty:启动是需要读取 start.ini 的配置信息. (2)第一个注意事项只要保证 ...

  8. gitlab备份与恢复操作方法

    github私有仓库是收费的,有些代码不方便托管到外面的git仓库,因此就产生了自己搭建git服务器的需求. 好在有广大的开源人士的贡献,有了gitlab这一神器. 手动配置较多,直接用集成包: bi ...

  9. H.264编码之DCT变换原理

    DCT变换是一种与FFT变换紧密相连的数学运算,当函数为偶函数是,其傅立叶展开式只有余弦项,因些称为余弦变换,其离散化的过程称为DCT(离散余弦)变换.下面我们就推导下H.264的4x4整数DCT公式 ...

  10. Android中将Bitmap对象以PNG格式保存在内部存储中

    在Android中进行图像处理的任务时,有时我们希望将处理后的结果以图像文件的格式保存在内部存储空间中,本文以此为目的,介绍将Bitmap对象的数据以PNG格式保存下来的方法. 1.添加权限 由于是对 ...