Kafka Producer发送消息至Broker原理和高性能必备参数设置
Kafka
一个电脑小知识,为大家介绍Kafka方面的知识,如有不对的地方欢迎指正!
Producer发送消息步骤
Kafka producer的正常生产逻辑包含以下几个步骤:
- 配置生产者客户端参数常见生产者实例。
- 构建待发送的消息。
- 发送消息。
- 关闭生产者实例。
Producer发送消息的过程如下图所示,需要经过拦截器,序列化器和分区器,最终由累加器批量发送至 Broker。

Kafka Producer生产必备参数
- bootstrap.server:指定 Kafka 的 Broker 的地址
- key.serializer:key 序列化器
- value.serializer:value 序列化器
常见参数:
- batch.num.messages
默认值:200,每次批量消息的数量,只对 asyc 起作用。
- request.required.acks
默认值:0,0 表示 producer 毋须等待 leader 的确认,1 代表需要 leader 确认写入它的本地 log 并立即确认,-1 代表所有的备份都完成后确认。只对 async 模式起作用,这个参数的调整是数据不丢失和发送效率的 tradeoff,如果对数据丢失不敏感而在乎效率的场景可以考虑设置为 0,这样可以大大提高 producer 发送数据的效率。
- request.timeout.ms
默认值:10000,确认超时时间。
- partitioner.class
默认值:kafka.producer.DefaultPartitioner,必须实现 kafka.producer.Partitioner,根据 Key 提供一个分区策略。_有时候我们需要相同类型的消息必须顺序处理,这样我们就必须自定义分配策略,从而将相同类型的数据分配到同一个分区中。_
- producer.type
默认值:sync,指定消息发送是同步还是异步。异步 asyc 成批发送用 kafka.producer.AyncProducer, 同步 sync 用 kafka.producer.SyncProducer。同步和异步发送也会影响消息生产的效率。
- compression.topic
默认值:none,消息压缩,默认不压缩。其余压缩方式还有,”gzip”、”snappy”和”lz4″。对消息的压缩可以极大地减少网络传输量、降低网络 IO,从而提高整体性能。
- compressed.topics
默认值:null,在设置了压缩的情况下,可以指定特定的 topic 压缩,未指定则全部压缩。
- message.send.max.retries
默认值:3,消息发送最大尝试次数。
- retry.backoff.ms
默认值:300,每次尝试增加的额外的间隔时间。
- topic.metadata.refresh.interval.ms
默认值:600000,定期的获取元数据的时间。当分区丢失,leader 不可用时 producer 也会主动获取元数据,如果为 0,则每次发送完消息就获取元数据,不推荐。如果为负值,则只有在失败的情况下获取元数据。
相关阅读
-
什么是http/2 http2.0与http1.1的区别
很多人在检测https站点等级的时候,有一项就是http2是否支持,那么到底什么是什么是http/2,它与与http1.1和1.0的区别又是什么呢?下面ITDAI博主来给大家介绍下http2.0的好处有哪些! 一、什么是
-
如何提高API接口的性能 优化API接口性能的有效方法
IT袋网网为你介绍如何提高API接口的性能方面的介绍,接下来一起来看看吧。 下图显示了提高 API 性能的 5 种常见技巧。 1、分页 这是在结果集较大时常用的优化方法。 结果会以流式方式传回
-
OSPFv3设备类型有哪些 OSPFv3有哪些设备类型?
为关注IT袋网网的网友们详解OSPFv3设备类型有哪些方面的知识,请看下面详细的介绍。 在OSPFv3(Open Shortest Path First version 3)协议中,不同的设备扮演着关键的角色,协同工作来构建稳定、高效
-
OSI七层网络模型详解 OSI七层模型是哪七层
一篇IT技术小知识,为您介绍OSI七层网络模型详解的电脑方面的小经验,具体内容如下: OSI七层网络模型是一种将计算机网络体系结构按照功能划分为七层的标准模型。这个模型的目的是为了


