前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Kafka源码分析-配置文件

Kafka源码分析-配置文件

作者头像
扫帚的影子
发布2018-09-05 17:14:23
5480
发布2018-09-05 17:14:23
举报
  • 几乎没有服务不需要配置:命令行参数 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: 定义了所有的配置项名称:
代码语言:javascript
复制
PrincipalBuilderClassProp = SslConfigs.PRINCIPAL_BUILDER_CLASS_CONFIG
...

说明文档:

代码语言:javascript
复制
/* Documentation */
  /** ********* Zookeeper Configuration ***********/
  val ZkConnectDoc = "Zookeeper host string"
...

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

代码语言:javascript
复制
private val configDef = {
    import ConfigDef.Importance._
    import ConfigDef.Range._
    import ConfigDef.Type._
    import ConfigDef.ValidString._

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

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

代码语言:javascript
复制
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

  • 构造函数:
代码语言:javascript
复制
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来更新一组配置项;

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2016.12.21 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Kafka的配置
  • Kafka配置设置实现
  • 通用Config类:AbstractConfig
  • 通用config构建类:ConfigDef
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档