zoukankan      html  css  js  c++  java
  • Kakfa揭秘 Day3 Kafka源码概述

    Kakfa揭秘 Day3

    Kafka源码概述

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

    总体

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

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

    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主要的启动类,代码非常的简洁:

    Snip20160629_68

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

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

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

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

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

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

  • 相关阅读:
    BZOJ 2219 数论之神 (CRT推论+BSGS+原根指标)
    BZOJ 2618: [Cqoi2006]凸多边形 (半平面交)
    BZOJ 1038: [ZJOI2008]瞭望塔
    BZOJ 1007: [HNOI2008]水平可见直线 (半平面交)
    BZOJ 1845: [Cqoi2005] 三角形面积并 (辛普森积分)
    BZOJ 2458: [BeiJing2011]最小三角形 (分治)
    BZOJ 3210: 花神的浇花集会 (切比雪夫距离)
    BZOJ 2013 : [Ceoi2010]A huge tower / Luogu SP6950 CTOI10D3
    BZOJ 3630: [JLOI2014]镜面通道 (网络流 +计算几何)
    bzoj 2820 YY的GCD
  • 原文地址:https://www.cnblogs.com/dt-zhw/p/5628409.html
Copyright © 2011-2022 走看看