Kafka源码分析-配置文件

作者: 扫帚的影子 | 来源:发表于2016-12-21 16:51 被阅读778次
  • 几乎没有服务不需要配置:命令行参数 or 配置文件;
  • 配置项多了, 设置起来太麻烦;配置项少, 不够灵活;

Kafka的配置

  • Kafka的配置相当丰富,写成本手册一点问题都没有, 官网配置说明;
  • 与Kafka Server相关的配置分类:
    Zookeeper
    General
    Authorizer
    Socket Server
    Log
    Replication
    Controlled shutdown
    Offset management
    Quota
    Kafka Metrics
    SSL
    Sasl

Kafka配置设置实现

  • 所在文件: core/src/main/scala/kafka/server/KafkaConfig.scala;
  • object Defaults: 定义了所有的配置项默认值;
  • object KafkaConfig: 定义了所有的配置项名称:
PrincipalBuilderClassProp = SslConfigs.PRINCIPAL_BUILDER_CLASS_CONFIG
...

说明文档:

/* Documentation */
  /** ********* Zookeeper Configuration ***********/
  val ZkConnectDoc = "Zookeeper host string"
...

创建了configDef, 是一个ConfigDef类对象:

private val configDef = {
    import ConfigDef.Importance._
    import ConfigDef.Range._
    import ConfigDef.Type._
    import ConfigDef.ValidString._

    new ConfigDef().define(...).define(...)...

作为Class KafkaConfig的伴生类,定义了创建KafkaConfig对象的工厂方法:

def apply(props: java.util.Map[_, _]): KafkaConfig = new KafkaConfig(props, true)

通用Config类:AbstractConfig

  • 所在文件: clients/src/main/java/org/apache/kafka/common/config/AbstractConfig.java
  • 源码中注释:

A convenient base class for configurations to extend.
This class holds both the original configuration that was provided as well as the parsed

  • 构造函数:
public AbstractConfig(ConfigDef definition, Map<?, ?> originals, Boolean doLog)

originals表示所有被用户设置了的参数;
definition表示所有的配置项,包默认值;
通过调用definition.parse(this.originals)得到使用用户设置参数更新后的所有配置项和值;

  • 提供一系列的get方法,返回相应配置的值:
    getInt
    getShort
    getLong
    getDouble
    getList
    getBoolean
    getString
    getPassword
    getClass

通用config构建类:ConfigDef

  • 所在文件: clients/src/main/java/org/apache/kafka/common/config/ConfigDef.java
  • define: 加入某一配置项,包括其name, type, defaultValue, importance, documentation等;
  • parse(Map<?, ?> props): 使用props来更新一组配置项;

Kafka启动流程分析

Kafka源码分析-汇总

相关文章

  • Kafka源码分析-Content Table

    Kafka源码分析-网络层-1 Kafka源码分析-网络层-2 Kafka源码分析-网络层-3 Kafka源码分析...

  • KafkaProducer

    Kafka源码阅读(一):Kafka Producer整体架构概述及源码分析 zqhxuyuan Kafka源码分...

  • Kafka源码分析-配置文件

    几乎没有服务不需要配置:命令行参数 or 配置文件; 配置项多了, 设置起来太麻烦;配置项少, 不够灵活; Kaf...

  • KafkaProducer Sender 线程详解(含详细的执行

    温馨提示:本文基于 Kafka 2.2.1 版本。 上文 《源码分析 Kafka 消息发送流程》 已经详细介绍了 ...

  • Mybatis源码分析与仿写

    Mybatis源码分析 项目介绍 xml文件 java文件 源码分析 读取配置文件//Resources的getR...

  • kafka MetaData

    阅读以下两个即可 Kafka源码阅读(二):Producer Metadata概述及源码分析 KafkaProdu...

  • Kafka源码分析

    1 消息处理入口 以下是Kafka消息处理的入口,即客户端发送到服务端消息处理方法。 2 内存中offset信息来...

  • Kafka 源码剖析(一)

    1.基础概述 在对Kafka使用层面掌握后,进一步提升分析其源码是极有必要的。纵观Kafka源码工程结构,不算太复...

  • Kafka控制器事件处理全流程解析

    前言 大家好,我是 yes。 这是Kafka源码分析第四篇文章,今天来说说 Kafka控制器,即 Kafka Co...

  • Kafka之Consumer获取消费数据全过程图解

    这篇文章是作为:跟我学Kafka源码之Consumer分析 的补充材料,看过我们之前源码分析的同学可能知道。本文将...

网友评论

    本文标题:Kafka源码分析-配置文件

    本文链接:https://www.haomeiwen.com/subject/nnuqvttx.html