Kafka 核心技术与实战
胡夕
Apache Kafka Committer,老虎证券技术总监
52815 人已学习
新⼈⾸单¥68
登录后,你可以任选4讲全文学习
课程目录
已完结/共 47 讲
开篇词 (1讲)
结束语 (1讲)
Kafka 核心技术与实战
15
15
1.0x
00:00/00:00
登录|注册

29 | Kafka动态配置了解下?

动态参数的保存机制和设置方法
无需重启Broker,降低运维成本
Kafka 1.1.0版本引入的动态Broker参数
哪些参数应该变为可动态修改?
删除动态参数配置
设置per-broker范围参数
设置cluster-wide范围值
使用kafka-configs脚本
参数优先级
ZooKeeper中的保存路径
动态配置的保存机制
实时变更JMX指标收集器
动态调整Compact操作性能
动态更新SSL Keystore有效期
动态调整连接信息或安全配置信息
动态调整线程池大小
动态参数的使用场景
静态参数 vs 动态参数
设置Kafka参数的方法
小结
开放讨论
如何配置?
如何保存?
使用场景
什么是动态Broker参数配置?
怎么配置Kafka的动态Broker参数?

该思维导图由 AI 生成,仅供参考

你好,我是胡夕。今天我要和你讨论的主题是:Kafka 的动态 Broker 参数配置。

什么是动态 Broker 参数配置?

在开始今天的分享之前,我们先来复习一下设置 Kafka 参数,特别是 Broker 端参数的方法。
在 Kafka 安装目录的 config 路径下,有个 server.properties 文件。通常情况下,我们会指定这个文件的路径来启动 Broker。如果要设置 Broker 端的任何参数,我们必须在这个文件中显式地增加一行对应的配置,之后启动 Broker 进程,令参数生效。我们常见的做法是,一次性设置好所有参数之后,再启动 Broker。当后面需要变更任何参数时,我们必须重启 Broker。但生产环境中的服务器,怎么能随意重启呢?所以,目前修改 Broker 端参数是非常痛苦的过程。
基于这个痛点,社区于 1.1.0 版本中正式引入了动态 Broker 参数(Dynamic Broker Configs)。所谓动态,就是指修改参数值后,无需重启 Broker 就能立即生效,而之前在 server.properties 中配置的参数则称为静态参数(Static Configs)。显然,动态调整参数值而无需重启服务,是非常实用的功能。如果你想体验动态 Broker 参数的话,那就赶快升级到 1.1 版本吧。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

Kafka 1.1.0版本引入了动态Broker参数配置,这一重要技术功能允许用户在无需重启Broker的情况下动态调整参数值,极大地提高了管理效率。动态参数保存在ZooKeeper中,具有不同的保存机制和优先级。文章介绍了如何使用Kafka自带的kafka-configs脚本来配置动态参数,包括设置、查看和删除参数。常用的动态参数包括日志留存时间、线程池大小、SSL相关参数以及副本拉取速度等,这些参数的动态调整能够应对实时变化的需求。动态Broker参数配置为Kafka用户提供了更灵活、高效的管理方式,极大地降低了运维成本。社区也在讨论将更多参数升级为动态参数,期待未来的发展。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《Kafka 核心技术与实战》
新⼈⾸单¥68
立即购买
登录 后留言

全部留言(19)

  • 最新
  • 精选
  • 请问老师,kafka动态调整配置的实现原理是啥?它怎么做到不需重启broker就能使配置生效的?

    作者回复: 把配置保存在ZooKeeper中,然后动态监听这个变更,一旦监听到立即处理

    2019-08-18
    2
    17
  • cricket1981
    follower为什么会拉取副本慢?它不负责读写只专心同步副本数据,增加线程就有用吗?会增加leader负担吗?

    作者回复: 因为是异步的网络请求。一个Broker上可能有很多follower副本,增加线程可以均匀分散这些follower副本来去任务

    2019-08-09
    12
  • 第一片心意
    动态更改之后的参数,如果某个broker重启的话,那些动态修改过的参数会失效吧,毕竟broker启动时,会读取 config/server.propertyes 文件的内容。

    作者回复: 不会失效。动态参数配置在ZooKeeper中

    2019-12-16
    11
  • cricket1981
    怎样知道什么时候该调整这两组线程池大小?

    作者回复: 可以监控请求队列的大小

    2019-08-09
    6
  • 无菇朋友
    老师 请问下 怎么查看每个broker的请求积压情况?

    作者回复: 可以看看broker端的请求队列的JMX指标

    2019-08-20
    5
  • 外星人
    您好,我们生产上num.io.threads已经提高到了24,但是对应idle还是在0.3左右,是不是kafkaapi哪个接口处理慢了?这种情况一般如何定位啊?谢谢

    作者回复: 大概率是PRODUCE和FETCH请求。不过你最好结合kafka.network:type=RequestMetrics,name=RequestQueueTimeMs,request={Produce|FetchConsumer|FetchFollower}确认下是否需要调整num.network.threads

    2019-08-22
    2
    1
  • 外星人
    你好,我们用的版本是1.1,请问下,动态参数有没有bug啊?

    作者回复: 目前没有太严重的bug

    2019-08-08
    1
  • 玉剑冰锋
    这么看的话,是不是不管是动态参数还是静态参数,集群中的broker配置是可以不一样的对吧?我用0.11(测试环境),环境中三台kafka磁盘容量不一样,导致的问题就是另外两台磁盘已经到了警戒值,剩下那一台磁盘始终用不上,如果可以的话我直接调整一台的保留时间就好了

    作者回复: 每个Broker可以是不同的配置。

    2019-08-08
    2
    1
  • yic
    胡老师,有个问题想请教一下,我们项目想通过广播消息给下游服务。用到了kafka,消费消息的服务每个实例都设置自己的消费组groupId,如:server_prefix_IP_PORT。这样的话,每次服务部署,消费组的groupId都会发生变化。那之前的消费者组信息却还保留在系统中。这样就导致kafka监控时,还能看到老的消费者组相关指标。请问有什么好的方式处理这个问题吗?

    作者回复: 消费者组的名字不太适合总是动态修改,因为每次都相当于创建了一个新的消费者组。当然,如果一定要这么用,你可以手动把消费者组的信息删除掉(高版本的Kafka提供了这个功能)

    2021-06-18
    2
  • DK
    胡老师好,我们通过canal将db的数据发送到kafka(kafka_2.11-1.1.1),设置的log.retention.hours=72,保留3天,但是偶尔出现某些topic的partion会删除当天的数据文件导致数据丢失。查看当时的kafka日志 [2021-03-15 11:06:51,824] INFO [Log partition=um.am_gongzhonghao_scene_user-0, dir=/apps/srv/kafka/data] Deleting segments LogSegment(baseOffset=73347921, size=470345801, lastModifiedTime=1615777551000, largestTime=1615518241494) (kafka.log.Log) 发现lastModifiedTime是更新了的,但largestTime没有更新,1615518241494对应的时间为“2021-03-12 11:04:01”,刚好是3天前。不知道这种情况胡老师是否遇到过。

    作者回复: 查查是不是canal客户端的问题,比如发送的kafka消息没有时间戳?

    2021-05-11
收起评论
显示
设置
留言
19
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部