• 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

  • 相关阅读:
    web.xml里<filtermapping>中的<dispatcher>作用
    C3P0的详细配置说明(com.mchange.v2.c3p0.ComboPooledDataSource)
    autowire异常的三个情况,以及处理方式
    visual studio 2012 密钥
    Executor线程池实例
    使用BufferedReader和BufferedWriter读写文件
    WEB开发工具
    access内置函数
    ASP.NET缓存技术学习入门页面缓存(OutPut Caching)
    ASP.NET缓存学习入门数据缓存
  • 原文地址:https://www.cnblogs.com/dt-zhw/p/5628409.html
Copyright © 2020-2023  润新知