Kafka常用参数

这篇具有很好参考价值的文章主要介绍了Kafka常用参数。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

概要

kafka broker、consumer、和producer都有很多可配置的参数。本文主要总结日常开发中常用到的参数。其中producer端可以在org.apache.kafka.clients.producer.ProducerConfig
中找到配置项,consumer端可以在org.apache.kafka.clients.consumer.ConsumerConfig中找到各配置项。

broker端参数

$KAFKA_HOME/config/server.properties文件中的配置。

参数名称 描述 举例/默认值
zookeeper.connect 用于配置Kafka要连接的Zookeeper/集群的地址。
它的值是一个字符串,使用逗号分隔Zookeeper的多个地址
Zookeeper的单个地址是 host:port形式的,可以在最后添加Kafka在Zookeeper中的根节点路径
zookeeper.connect=node2:2181,
node3:2181,node4:2181/myKafka
listeners 用于指定当前Broker向外发布服务的地址和端口。 listeners=PLAINTEXT://0.0.0.0:9092
listener.security.protocol.map 监听器名称和安全协议的映射配置
比如,可以将内外网隔离
listener.security.protocol.map=INTERNAL:SSL,
EXTERNAL:SSL
inter.broker.listener.name 于配置broker之间通信使用的监听器名称,该名称必须在advertised.listeners列表中 inter.broker.listener.name=EXTERNAL
advertised.listeners 将该地址发布到zookeeper供客户端使用

典型配置文章来源地址https://www.toymoban.com/news/detail-696488.html

listener.security.protocol.map=INTERNAL:PLAINTEXT,EXTERNAL:PLAINTEXT
listeners=INTERNAL://192.168.100.101:9092,EXTERNAL:node1:9093
inter.broker.listener.name=EXTERNAL
advertised.listeners=PLAINTEXT://node1:9092
参数名称 描述 举例/默认值
broker.id 用于唯一标记一个Kafka的Broker,它的值是一个任意integer值 broker.id=0
log.dir 定Kafka在磁盘上保存消息的日志片段的目录

producer端参数

参数名称 描述 举例/默认值
bootstrap.servers 生产者客户端与broker集群建立初始连接需要的broker地址列表 node1:9092,node2:9092
acks acks=0:生产者不等待broker的任何消息确认。只要将消息放到了socket的缓冲区,就认为消息已发送。不能保证服务器是否收到该消息,retries设置也不起作用,因为客户端不关心消息是否发送失败。客户端收到的消息偏移量永远是-1。
acks=1:leader将记录写到它本地日志,就响应客户端确认消息,而不等待follower副本的确认。如果leader确认了消息就宕机,则可能会丢失消息,因为follower副本可能还没来得及同步该消息。
acks=all:leader等待所有同步的副本确认该消息。保证了只要有一个同步副本存在,消息就不会丢失。这是最强的可用性保证。等价于acks=-1
默认值为1,字符串。可选值:[all, -1, 0, 1]
compression.type 生产者生成数据的压缩格式。默认是none(没有压缩)。允许的值:none,gzip,snappy和lz4。压缩是对整个消息批次来讲的。消息批的效率也影响压缩的比例。消息批越大,压缩效率越好。 默认是none
retries 设置该属性为一个大于1的值,将在消息发送失败的时候重新发送消息,允许重试,但是不设置max.in.flight.requests.per.connection为1,存在消息乱序的可能,因为如果两个批次发送到同一个分区,第一个失败了重试,第二个成功了,则第一个消息批在第二个消息批后 默认:0,可选值:[0,…,2147483647]
retry.backoff.ms 在向一个指定的主题分区重发消息的时候,重试之间的等待时间。避免了密集循环的重新发送请求 long型值,默认100。可选值:[0,…]
request.timeout.ms 客户端等待请求响应的最大时长。如果服务端响应超时,则会重发请求,除非达到重试次数。该设置应该比 replica.lag.time.max.ms (a broker configuration)要大,以免在服务器延迟时间内重发消息 int类型值,默认:30000ms
batch.size 当多个消息发送到同一个分区的时候,生产者尝试将多个记录作为一个批来处理。批处理提高了客户端和服务器的处理效率。
该配置项以字节为单位控制默认批的大小。
所有的批小于等于该值
发送给broker的请求将包含多个批次,每个分区一个
如果该值设置的比较小,会限制吞吐量(设置为0会完全禁用批处理)。如果设置的很大,又有一点浪费内存,因为Kafka会永远分配这么大的内存来参与到消息的批整合中
16384
client.id 生产者发送请求的时候传递给broker的id字符串。
用于在broker的请求日志中追踪什么应用发送了什么消息。
一般该id是跟业务有关的字符串
buffer.memory 生产者可以用来缓存等待发送到服务器的记录的总内存字节。如果记录的发送速度超过了将记录发送到服务器的速度,则生产者将阻塞 max.block.ms 的时间,此后它将引发异常。此设置应大致对应于生产者将使用的总内存 long型数据。默认值:33554432
max.block.ms 控制 KafkaProducer.send() 和 KafkaProducer.partitionsFor() 阻塞的时长。当缓存满了或元数据不可用的时候,这些方法阻塞。在用户提供的序列化器和分区器的阻塞时间不计入 long型值,默认:60000,可选值:[0,…]
linger.ms 一批消息发往broker的时机由两个参数控制,一个时batch.size,另一个时linger.ms,linger.ms表示这批消息的等待时间,消息不管有没达到batche.size的大小,达到了linger.ms的等待时间也会向broker端发送 long型值,默认:0
max.request.size 单个请求的最大字节数。该设置会限制单个请求中消息批的消息个数,以免单个请求发送太多的数据。服务器有自己的限制批大小的设置,与该配置可能不一样 int类型值,默认1048576
max.in.flight.requests.per.connection 单个连接上未确认请求的最大数量。达到这个数量,客户端阻塞。如果该值大于1,且存在失败的请求,在重试的时候消息顺序不能保证 int类型值,默认5

consumer端参数

参数名称 描述 默认值
bootstrap.servers 向Kafka集群建立初始连接用到的host/port列表
client.id 当从服务器消费消息的时候向服务器发送的id字符串,在ip/port基础上,提供应用的逻辑名称,记录在服务端的请求日志中,用于追踪请求的源。
group.id 用于唯一标志当前消费者所属的消费组的字符串
auto.offset.reset earliest:自动重置偏移量到最早的偏移量
latest:自动重置偏移量为最新的偏移量
none:如果消费组原来的(previous)偏移量不存在,则向消费者抛异常
anything:向消费者抛异常
默认值,latest
enable.auto.commit 是否自动提交位移 true
auto.commit.interval.ms 如果设置了 enable.auto.commit 的值为true,则该值定义了消费者偏移量向Kafka提交的频率 5000ms
fetch.min.bytes 服务器对每个拉取消息的请求返回的数据量最小值。如果数据量达不到这个值,请求等待,以让更多的数据累积,达到这个值之后响应请求。默认设置是1个字节,表示只要有一个字节的数据,就立即响应请求,或者在没有数据的时候请求超时。将该值设置为大一点儿的数字,会让服务器等待稍微长一点儿的时间以累积数据。如此则可以提高服务器的吞吐量,代价是额外的延时间。 1字节
fetch.max.wait.ms 如果服务器端的数据量达不到 fetch.min.bytes 的话,服务器端不能立即响应请求。该时间用于配置服务器端阻塞请求的最大时长
session.timeout.ms 当使用Kafka的消费组的时候,消费者周期性地向broker发送心跳数表明自己的存在。如果经过该超时时间还没有收到消费者的心跳,则broker将消费者从消费组移除,并启动再平衡。该值必须在broker配置 group.min.session.timeout.ms 和group.max.session.timeout.ms 之间。 45000ms
heartbeat.interval.ms 当使用消费组的时候,该条目指定消费者向消费者协调器发送心跳的时间间隔。心跳是为了确保消费者会话的活跃状态,同时在消费者加入或离开消费组的时候方便进行再平衡。该条目的值必须小于 session.timeout.ms ,也不应该高于session.timeout.ms 的1/3。可以将其调整得更小,以控制正常重新平衡的预期时间。 3000ms
max.poll.records 一次调用poll()方法返回的记录最大数量 500
max.poll.interval.ms 使用消费组的时候调用poll()方法的时间间隔。该条目指定了消费者调用poll()方法的最大时间间隔。如果在此时间内消费者没有调用poll()方法,则broker认为消费者失败,触发再平衡,将分区分配给消费组中其他消费者。 300000ms

到了这里,关于Kafka常用参数的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • kafka-producer batch.size与linger.ms参数

    Kafka 需要在吞吐量和延迟之间取得平衡,可通过下面两个参数控制。 当多个消息发送到相同分区时,生产者会将消息打包到一起,以减少请求交互. 而不是一条条发送 批次大小可通过 batch.size 参数设置。默认: 16KB 较小的批次大小有可能降低吞吐量。(设置为0则完全禁用批处理

    2024年02月14日
    浏览(31)
  • Kafka常用参数

    kafka broker、consumer、和producer都有很多可配置的参数。本文主要总结日常开发中常用到的参数。其中producer端可以在 org.apache.kafka.clients.producer.ProducerConfig 中找到配置项,consumer端可以在 org.apache.kafka.clients.consumer.ConsumerConfig 中找到各配置项。 $KAFKA_HOME/config/server.properties文件中的

    2024年02月09日
    浏览(27)
  • Failed to construct kafka producer at org.apache.kafka.clients.producer.KafkaProducer

    报错信息如下: 在网上找了很久的解决方案,也没找到个所以然,可能是我能力不足没理解到,后来我尝试clean下项目,竟然报错了 提示我pom.xml中有错误,我看了看,唯一有可能的是新导入的一个依赖去掉了版本号,我加上版本号后又重新clean下,成功了,, 然后,我重启

    2024年02月05日
    浏览(38)
  • 【Kafka】Kafka consumer lag 为负数

    最近对Kafka 集群部署了 Kafka_exporter 监控,并集成了 granfana 图标展示。 发现 Consumer Group Lag 有时候为负数。 于是进行一番查询,并总结整理下。 从下图可以看出, consumer group 值有时候出现负数的情况。 消息过期了(超过默认7天),已经被清理掉了,这时候 topic 最新的 end

    2024年02月13日
    浏览(53)
  • kafka中幂等性producer和事务性producer

    在Kafka中,“幂等性生产者”的概念是指一种特性,它确保消息在生产者的发送操作被重试时仅发送一次。幂等性是一种重要的特性,因为在分布式系统中,网络问题或其他故障可能导致生产者发送的消息在传输过程中失败,从而需要重新发送。如果生产者没有幂等性保证,

    2024年02月14日
    浏览(44)
  • Kafka 实战 - Kafka Broker工作流程

    Apache Kafka Broker 在 Kafka 集群中扮演着核心角色,负责接收、存储、复制及分发消息。以下是 Kafka Broker 的工作流程概览: 1. 启动与初始化 加载配置 :Kafka Broker 从 server.properties 文件加载配置参数,包括 Broker ID、监听地址、日志目录、ZooKeeper 连接信息等。 注册到 ZooKeeper :

    2024年04月15日
    浏览(41)
  • Kafka之Producer网络传输

    在Kafka的组成部分(Broker、Consumer、Producer)中,设计理念迥异,每个部分都有自己独特的思考。而把这些部分有机地组织起来,使其成为一个整体的便是「网络传输」。区别于其他消息队列的方式( RocketMQ处理网络部分直接使用成熟的组件Netty ),Kafka则是直接对java的NIO进行

    2024年03月23日
    浏览(42)
  • Kafka中的producer拦截器

    在Kafka中,拦截器一共有两种。分别是生产者端的和消费者端的。本文介绍生产者端的拦截器 Kafka Producer拦截器(Interceptor)主要用于实现clients端的定制化控制逻辑。对于Producer而言,Interceptor使得用户在消息发送前以及Producer回调逻辑前有机会对消息做一些定制化需求,比如

    2024年02月16日
    浏览(36)
  • 图解系列 图解Kafka之Producer

    开局一张图,其他全靠吹 发送消息流程如下 : 指定bootstrap.servers,地址的格式为 host:port 。它会连接bootstrap.servers参数指定的所有Broker,Producer启动时会发起与这些Broker的连接。因此,如果你为这个参数指定了1000个Broker连接信息,那么很遗憾,你的Producer启动时会首先创建与

    2024年02月09日
    浏览(36)
  • Kafka_02_Producer详解

    Producer (生产者): 生产并发送消息到Broker(推送) Producer是 多线程安全 的(建议通过池化以提高性能) Producer实例后可发送多条消息(可对应多个ProducerRecord) // 0.9之后的版本是基于Java实现(之前是Scala实现) Producer客户端发送消息大致逻辑: 配置Producer客户端参数并创建该Producer实例 构

    2024年02月01日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包