当前位置: 首页 > news >正文

kafka动态配置详解

目录

  • Broker配置
    • Broker静态配置
    • Broker动态配置
    • Broker动态配置列表
    • Broker动态配置操作
        • cluster-wide 范围值查看
        • cluster-wide 范围值 修改
        • per-broker 范围值 查看
        • per-broker 范围值 修改
        • per-broker 范围值 删除
        • cluster-wide 范围值 删除
    • 高概率调整配置
  • 主题Topic配置
    • 主题Topic动态配置列表
    • 查看
    • 配置
  • 动态配置存储
    • zookeeper模式
    • kraft 模式

kafka-configs.sh 是 Kafka 提供的一个命令行工具,用于管理 Kafka broker、主题 (topic)、消费者组 (consumer group) 等资源的配置。

Broker配置

Broker静态配置

通常情况下,我们会指定config路径下的server.properties 文件的来启动 Broker。
如果要设置 Broker 端的任何参数,我们必须在这个文件中显式地增加一行对应的配置,之后启动 Broker 进程,令参数生效。我们常见的做法是,一次性设置好所有参数之后,再启动 Broker。当后面需要变更任何参数时,我们必须重启 Broker。
在真正的生产环境中,随意重启Broker是不被允许的。所以需要有动态调整Broker参数的方法。

Broker动态配置

参考kafka配置说明,Dynamic Update Mode 列。该列有 3 类值,分别是 read-only、per-broker 和 cluster-wide。

  • read-only。被标记为 read-only 的参数和原来的参数行为一样,只有重启 Broker,才能令修改生效。
  • per-broker。被标记为 per-broker 的参数属于动态参数,修改它之后,只会在对应的 Broker 上生效。
  • cluster-wide。被标记为 cluster-wide 的参数也属于动态参数,修改它之后,会在整个集群范围内生效,也就是说,对所有 Broker 都生效。你也可以为具体的 Broker 修改 cluster-wide 参数。

原文地址

Broker动态配置列表

来自于./bin/kafka-configs.sh --help

                                      For entity-type 'brokers':             advertised.listeners                  background.threads                    compression.type                      follower.replication.throttled.rate   leader.replication.throttled.rate     listener.security.protocol.map        listeners                             log.cleaner.backoff.ms                log.cleaner.dedupe.buffer.size        log.cleaner.delete.retention.ms       log.cleaner.io.buffer.load.factor     log.cleaner.io.buffer.size            log.cleaner.io.max.bytes.per.second   log.cleaner.max.compaction.lag.ms     log.cleaner.min.cleanable.ratio       log.cleaner.min.compaction.lag.ms     log.cleaner.threads                   log.cleanup.policy                    log.flush.interval.messages           log.flush.interval.ms                 log.index.interval.bytes              log.index.size.max.bytes              log.local.retention.bytes             log.local.retention.ms                log.message.downconversion.enable     log.message.timestamp.after.max.ms    log.message.timestamp.before.max.ms   log.message.timestamp.difference.max.ms                                   log.message.timestamp.type            log.preallocate                       log.retention.bytes                   log.retention.ms                      log.roll.jitter.ms                    log.roll.ms                           log.segment.bytes                     log.segment.delete.delay.ms           max.connection.creation.rate          max.connections                       max.connections.per.ip                max.connections.per.ip.overrides      message.max.bytes                     metric.reporters                      min.insync.replicas                   num.io.threads                        num.network.threads                   num.recovery.threads.per.data.dir     num.replica.fetchers                  principal.builder.class               producer.id.expiration.ms             remote.log.index.file.cache.total.    size.bytes                           replica.alter.log.dirs.io.max.bytes.  per.second                           sasl.enabled.mechanisms               sasl.jaas.config                      sasl.kerberos.kinit.cmd               sasl.kerberos.min.time.before.relogin sasl.kerberos.principal.to.local.rulessasl.kerberos.service.name            sasl.kerberos.ticket.renew.jitter     sasl.kerberos.ticket.renew.window.    factor                               sasl.login.refresh.buffer.seconds     sasl.login.refresh.min.period.seconds sasl.login.refresh.window.factor      sasl.login.refresh.window.jitter      sasl.mechanism.inter.broker.protocol  ssl.cipher.suites                     ssl.client.auth                       ssl.enabled.protocols                 ssl.endpoint.identification.algorithm ssl.engine.factory.class              ssl.key.password                      ssl.keymanager.algorithm              ssl.keystore.certificate.chain        ssl.keystore.key                      ssl.keystore.location                 ssl.keystore.password                 ssl.keystore.type                     ssl.protocol                          ssl.provider                          ssl.secure.random.implementation      ssl.trustmanager.algorithm            ssl.truststore.certificates           ssl.truststore.location               ssl.truststore.password               ssl.truststore.type                   transaction.partition.verification.   enable                               unclean.leader.election.enable        

Broker动态配置操作

如果要设置 cluster-wide 范围的动态参数,需要显式指定 entity-default

cluster-wide 范围值查看
./bin/kafka-configs.sh --bootstrap-server 192.168.37.10:9092  --entity-type brokers --entity-default   --describe
cluster-wide 范围值 修改
./bin/kafka-configs.sh --bootstrap-server 192.168.37.10:9092  --entity-type brokers --entity-default --alter --add-config unclean.leader.election.enable=true

在这里插入图片描述
从输出来看,我们成功地在全局层面上设置该参数值为 true。注意 sensitive=false 的字眼,它表明我们要调整的参数不是敏感数据。如果我们调整的是类似于密码这样的参数时,该字段就会为 true,表示这属于敏感数据。

per-broker 范围值 查看
./bin/kafka-configs.sh --bootstrap-server 192.168.37.10:9092  --entity-type brokers --entity-name 1 --describe

[root@test-10 kafka_2.13-3.7.0]# ./bin/kafka-configs.sh --bootstrap-server 192.168.37.10:9092 --entity-type brokers --entity-name 1 --describe
Dynamic configs for broker 1 are:

per-broker 范围值 修改
./bin/kafka-configs.sh --bootstrap-server 192.168.37.10:9092  --entity-type brokers --entity-name 1 --alter --add-config unclean.leader.election.enable=false

在这里插入图片描述
这条命令的输出信息很多。我们关注两点即可。

  • 在 Broker 1 层面上,该参数被设置成了 false,这表明命令运行成功了。
  • 从倒数第二行可以看出,在全局层面上,该参数值依然是 true。这表明,我们之前设置的 cluster-wide 范围参数值依然有效。
per-broker 范围值 删除
./bin/kafka-configs.sh --bootstrap-server 192.168.37.10:9092  --entity-type brokers  --entity-name 1  --alter --delete-config unclean.leader.election.enable

在这里插入图片描述

cluster-wide 范围值 删除
./bin/kafka-configs.sh --bootstrap-server 192.168.37.10:9092  --entity-type brokers --entity-default --alter --delete-config unclean.leader.election.enable

在这里插入图片描述

高概率调整配置

  1. log.retention.ms。

修改日志留存时间应该算是一个比较高频的操作,毕竟,我们不可能完美地预估所有业务的消息留存时长。虽然该参数有对应的主题级别参数可以设置,但拥有在全局层面上动态变更的能力,依然是一个很好的功能亮点。

  1. num.io.threads 和 num.network.threads。

这是我们在前面提到的两组线程池。就我个人而言,我觉得这是动态 Broker 参数最实用的场景了。毕竟,在实际生产环境中,Broker 端请求处理能力经常要按需扩容。如果没有动态 Broker 参数,我们是无法做到这一点的。

  1. 与 SSL 相关的参数。

主要是 4 个参数(ssl.keystore.type、ssl.keystore.location、ssl.keystore.password 和 ssl.key.password)。允许动态实时调整它们之后,我们就能创建那些过期时间很短的 SSL 证书。每当我们调整时,Kafka 底层会重新配置 Socket 连接通道并更新 Keystore。新的连接会使用新的 Keystore,阶段性地调整这组参数,有利于增加安全性。

  1. num.replica.fetchers。

这也是我认为的最实用的动态 Broker 参数之一。Follower 副本拉取速度慢,在线上 Kafka 环境中一直是一个老大难的问题。针对这个问题,常见的做法是增加该参数值,确保有充足的线程可以执行 Follower 副本向 Leader 副本的拉取。现在有了动态参数,你不需要再重启 Broker,就能立即在 Follower 端生效,因此我说这是很实用的应用场景。

主题Topic配置

主题Topic动态配置列表

                                         For entity-type 'topics':            cleanup.policy                        compression.type                      delete.retention.ms                   file.delete.delay.ms                  flush.messages                        flush.ms                              follower.replication.throttled.       replicas                             index.interval.bytes                  leader.replication.throttled.replicas local.retention.bytes                 local.retention.ms                    max.compaction.lag.ms                 max.message.bytes                     message.downconversion.enable         message.format.version                message.timestamp.after.max.ms        message.timestamp.before.max.ms       message.timestamp.difference.max.ms   message.timestamp.type                min.cleanable.dirty.ratio             min.compaction.lag.ms                 min.insync.replicas                   preallocate                           remote.storage.enable                 retention.bytes                       retention.ms                          segment.bytes                         segment.index.bytes                   segment.jitter.ms                     segment.ms                            unclean.leader.election.enable

查看

./bin/kafka-configs.sh --bootstrap-server 192.168.37.10:9092 --entity-type topics --entity-name test-topic --describe

配置

./bin/kafka-configs.sh --bootstrap-server 192.168.37.10:9092 --entity-type topics --entity-name test-topic --alter --add-config retention.ms=43200000

配置后查看效果:
在这里插入图片描述

动态配置存储

zookeeper模式

zookeeper模式的kafka,动态配置保存在zookeeper中。

kraft 模式

基于kraft模式 的kafka 动态配置在 主题 __cluster_metadata 中存储

可以通过 ./bin/kafka-metadata-shell.sh --snapshot data/__cluster_metadata-0/00000000000000000000.log 命令查看
在这里插入图片描述

http://www.dtcms.com/a/294483.html

相关文章:

  • Tile级原语与自动推理机制融合,TileAI社区发起人深度剖析TileLang核心技术与优势
  • 小白做投资测算,如何快速上手?
  • Hot100题解
  • iOS 抓包工具有哪些?2025实用指南与场景推荐
  • Docker 基础概念
  • 开源的语音合成大模型-Cosyvoice使用介绍
  • UE5多人MOBA+GAS 29、创建一个等级UI
  • Effective Python 第15条 不要过分依赖给字典添加条目时所用的顺序
  • Kafka的介绍
  • Linux 或者 Ubuntu 离线安装 ollama
  • windows 11 下git软件提交正常,idea git提交总提示需要token
  • Java设计模式-备忘录模式
  • 前缀和经典问题整理
  • 扫描电镜与透射电镜联用表征形貌与元素组成-测试GO
  • C语言(20250723)
  • Zookeeper基本功能和应用场景
  • Zookeeper学习专栏(八):使用高级客户端库Apache Curator
  • 【数据结构初阶】--树和二叉树先导篇
  • spring的value注解
  • 使用Qt下QAudioOutput播放声音
  • Google DeepMind发布MoR架构:50%参数超越传统Transformer,推理速度提升2倍
  • 网络安全威胁和防御措施
  • 水库大坝安全自动监测系统:守护水脉长城的智能防线
  • DDD领域驱动设计C++实现案例:订单管理系统
  • mysql 远程连接配置
  • 比特币技术简史 第六章:网络协议 - P2P网络、节点类型与消息传播
  • SCDN:网络安全新防线下的技术革新与安全效能
  • SQL数据清洗实用函数——以具体场景为例详细学习
  • (一)从零搭建unity3d机械臂仿真-unity3d导入urdf模型
  • 初识opencv02——图像预处理1