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

07 | 最最最重要的集群参数配置(上)

chroot概念
保存Kafka集群的元数据信息
分布式协调框架
message.max.bytes
log.retention.bytes
log.retention.{hours|minutes|ms}
auto.leader.rebalance.enable
unclean.leader.election.enable
auto.create.topics.enable
host.name/port
advertised.listeners
listeners
zookeeper.connect
补充log.dirs的单个路径
没有默认值,需手动指定
指定Broker使用的文件目录路径
数据留存参数
Topic管理参数
与Broker连接相关的设置
ZooKeeper相关设置
log.dir
log.dirs
静态参数与动态参数
部分参数对系统影响更明显
重要性未体现在官方文档中
Broker端参数
胡夕
最最最重要的Kafka集群参数配置

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

你好,我是胡夕。今天我想和你聊聊最最最重要的 Kafka 集群配置。我这里用了 3 个“最”字并非哗众取宠,而是因为有些配置的重要性并未体现在官方文档中,并且从实际表现看,很多参数对系统的影响要比从文档上看更加明显,因此很有必要集中讨论一下。
我希望通过两期内容把这些重要的配置讲清楚。严格来说这些配置并不单单指 Kafka 服务器端的配置,其中既有 Broker 端参数,也有主题(后面我用我们更熟悉的 Topic 表示)级别的参数、JVM 端参数和操作系统级别的参数。
需要你注意的是,这里所说的 Broker 端参数也被称为静态参数(Static Configs)。我会在专栏后面介绍与静态参数相对应的动态参数。所谓静态参数,是指你必须在 Kafka 的配置文件 server.properties 中进行设置的参数,不管你是新增、修改还是删除。同时,你必须重启 Broker 进程才能令它们生效。而主题级别参数的设置则有所不同,Kafka 提供了专门的 kafka-configs 命令来修改它们。至于 JVM 和操作系统级别参数,它们的设置方法比较通用化,我介绍的也都是标准的配置参数,因此,你应该很容易就能够对它们进行设置。
下面我先从 Broker 端参数说起。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

Kafka集群参数配置对于构建高效消息系统至关重要。本文详细介绍了Kafka集群配置的重要性,包括Broker端参数、主题级别参数、JVM端参数和操作系统级别参数。强调了静态参数的重要性,需要在Kafka的配置文件中设置,并重启Broker进程生效。另外,介绍了使用kafka-configs命令修改主题级别参数,以及JVM和操作系统级别参数的设置方法。读者可通过本文快速了解Kafka集群配置的重要性和相关参数的设置方法,为构建高效的消息系统提供了重要参考。 文章内容主要围绕Kafka集群参数配置展开,包括Broker端参数、与ZooKeeper相关的设置、Broker连接相关的参数、Topic管理和数据留存方面的参数。对于每组参数,文章提供了详细的解释和建议,如存储信息的重要参数、与ZooKeeper相关的参数设置、Broker连接相关的设置、Topic管理参数和数据留存方面的参数。这些内容涵盖了构建高效消息系统所需的关键配置,对于Kafka用户具有实际指导意义。 在具体参数设置方面,文章提到了`log.retention.hours`和`log.retention.bytes`的重要性,以及`message.max.bytes`的设置建议。这些参数的合理配置对于Kafka集群的性能和稳定性至关重要,尤其在云上构建多租户的Kafka集群时更显重要。通过本文的总结,读者能够快速了解Kafka集群参数配置的关键性,并掌握相关参数的设置方法,为构建高效的消息系统提供了重要参考。

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

全部留言(111)

  • 最新
  • 精选
  • 大坏狐狸
    auto.create.topics.enable: 不能自立为王 unclean.leader.election.enable: 宁缺毋滥 auto.leader.rebalance.enable:江山不易改 log.retention.{hours|minutes|ms} :数据寿命 hours=168 log.rentention.bytes: 祖宅大小 -1 表示没限制 message.max.bytes: 祖宅大门宽度,默认 1000012=976KB

    作者回复: 我去,这个过于形象了~

    2020-03-16
    18
    265
  • 草帽路飞
    老师 advertised.listeners 这个配置能否再解释一下。感觉配置了 listeners之后就不用配置这个了呀?

    作者回复: advertised.listeners主要是为外网访问用的。如果clients在内网环境访问Kafka不需要配置这个参数。 常见的玩法是:你的Kafka Broker机器上配置了双网卡,一块网卡用于内网访问(即我们常说的内网IP);另一个块用于外网访问。那么你可以配置listeners为内网IP,advertised.listeners为外网IP。

    2019-06-18
    8
    107
  • 第一片心意
    auto.leader.rebalance.enable 关于这个参数的设置,我有一点不同的意见,官网说的是如果某个broker挂了,那分布在他上的leader副本就会自动切换到其他活着的broker上,但是挂掉的broker重启之后,集群并不会将他之前的leader副本再切换回来,这样就会使其他broker上leader副本数较多,而该broker上无leader副本(无新主题创建),从而造成负载不均衡的情况。 这时我们可以通过 kafka-preferred-replica-election.sh 脚本来重新平衡集群中的leader副本。但是我们配置这个参数为true的话,controller角色就会每五分钟(默认)检查一下集群不平衡的状态,进而重新平衡leader副本。

    作者回复: 同意。不过实际上,线上环境贸然大面积迁移副本leader是非常有风险的事情:)

    2019-12-13
    2
    45
  • QQ怪
    老师帮我们讲讲这个参数吧auto.offset.reset,我有时候删除一个topic时会导致offset异常,出现重复消费问题,不知道跟这个参数有没有关系??

    作者回复: 不太懂“删除topic后还出现重复消费”是什么意思?删完了还要继续消费它吗? 当consumer启动后它会从Kafka读取它上次消费的位移。情况1: 如果 Kafka broker端没有保存这个位移值,那么consumer会看auto.offset.reset的脸色 情况2:consumer拿到位移值开始消费,如果后面发现它要读取消息的位移在Kafka中不存在(可能对应的消息已经被删除了),那么它也会看auto.offset.reset的脸色 情况3:除以上这两种情况之外consumer不会再顾忌auto.offset.reset的值 怎么看auto.offset.reset的脸色呢?简单说就是earliest从头消息;latest从当前新位移处消费。

    2019-06-18
    39
  • 🇭 🇴 🇱 🇮 ...
    老师 我把message.max.bytes设置地挺大,但是java生产者发送1M以上数据就失败,集群也重启过,版本0.10左右 是否有其他参数需要调?

    作者回复: 需要。producer、broker、consumer三端都需要调整 broker: message.max.bytes和replica.fetch.max.bytes consumer:fetch.message.max.bytes

    2020-04-09
    3
    32
  • 杨陆伟
    你好,log.retention.bytes这个参数是针对主题的吧?比如设置为100M,Kafka定期会把每个主题的日志数据留存到100M以下?

    作者回复: 这个参数既有broker端也有topic端,不过最终都是作用于topic的。另外算法上也不是简单的比较大小。举个例子吧:假设日志段大小是700MB,当前分区共有4个日志段文件,大小分别是700MB,700MB,700MB和1234B——显然1234B那个文件就是active日志段。此时该分区总的日志大小是3*700MB+1234B=2100MB+1234B,如果阈值设置为2000MB,那么超出阈值的部分就是100MB+1234B,小于日志段大小700MB,故Kafka不会执行任何删除操作,即使总大小已经超过了阈值;反之如果阈值设置为1400MB,那么超过阈值的部分就是700MB+1234B > 700MB,此时Kafka会删除最老的那个日志段文件

    2019-12-30
    5
    28
  • 小头针
    胡老师,我在kafka升级过程中遇到过这样的问题,就是升级后的Kafka与之前的Kafka 的配置完全一样,就是版本不一样了。但是5个Broker后,Kafka Manager工具中,只有1个Broker有数据进入进出。后来同时添加了以下4个参数: rebalance.max.retries=4 auto.leader.rebalance.enable=true leader.imbalance.check.interval.seconds=300 leader.imbalance.per.broker.percentage=10 再重启Kafka,5个Broker都有数据进入进出,但是我不清楚这到底是哪个参数起到了决定性的作用。其中就有老师讲的auto.leader.rebalance.enable这个参数,但是我这里设置的是true?

    作者回复: 只有一个broker有数据进出,我猜是因为这样的原因:1. 首先你的主题分区副本数是1;2. 在你升级的过程中所有分区的Leader副本都变更到了同一台broker上。 后面开启了auto.leader.rebalance.enable=true之后它定期将Leader副本分散到不同broker上了。

    2019-06-24
    3
    27
  • 不了峰
    请教老师 gg.handler.kafkahandler.Mode = tx gg.handler.kafkahandler.Mode = op 这两个的差别。我们遇到时 dml 数据会丢失的情况。用的是 op 。 谢谢

    作者回复: 搜了一下,像是Oracle GoldenGate Kafka Adapter的参数。我没有用过,从文档中看这两者的区别是:当设置成op单个数据库表的变更(插入、更新、删除)会被当成一条Kafka消息发送;当设置成tx时,数据库事务所做的所有变更统一被封装进一条Kafka消息,并在事务提交后被发送。 显然,后者有事务性的保障,至少有原子性方面的保证,不会丢失部分CDC数据。

    2019-06-18
    15
  • 你好旅行者
    老师好!关于Unclean这个参数,将其设置为false之后,就意味着如果ISR内的所有broker都宕机,那么这个分区就不可用了。 刚好我前几天看到饶军在2013年的一次报告上讲到Kafka在CAP问题上的取舍,他说,因为Kafka是部署在一个DataCenter中的,而一个DataCenter很少会出现Partitioning的情况,所以Kafka放弃了分区容忍性。 我想问的是,Kafka舍弃了分区容忍性这一点是否可以体现在社区默认将Unclean设置为false上呢? 附上报告的地址:https://www.youtube.com/watch?v=XcvHmqmh16g 关于CAP的取舍出现在21:50左右的地方。谢谢老师!

    作者回复: 首先,CAP理论有很多有歧义的地方,我很好奇为什么国内很多人追捧CAP,其实对于分布式系统而言,很多一致性问题都是CAP覆盖不了的。 其次,我个人觉得饶大神并不是说Kafka放弃了P,其实Kafka是依托于ZooKeeper以及合理配置minIsr等参数来规避脑裂的。 第三,我翻看了社区对此提案的讨论,变更为false就是很朴素的思想:用户在默认情况下可能更加关心数据一致性,不想数据丢失。如果用户想要更高的可用性,手动调整即可。你可以看看社区对此问题的讨论:https://www.mail-archive.com/dev@kafka.apache.org/msg63086.html

    2019-06-18
    15
  • 咸淡一首诗
    老师,对于failover机制,kafka会新建副本,从leader处同步最新的数据给新建副本。如果坏掉的盘是leader持久化的盘并且其他副本没有来的及从坏掉的leader分区同步最新数据,重新选举leader后岂不是也会丢失数据???

    作者回复: 是的,这种情况会丢失数据。其实Kafka并没有承诺不丢失数据,而是在满足某些条件下才做持久化保证。

    2020-02-14
    11
收起评论
显示
设置
留言
99+
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部