Kafka作为一个分布式流处理平台,拥有众多配置参数,这些参数的设置对于Kafka的性能、可靠性和吞吐量等方面有着重要影响。以下是一些Kafka的常用参数设置及其解释:
生产者(Producer)参数
acks:
描述:指定了必须有多少个分区副本收到消息,生产者才会认为消息写入是成功的。
选项:
acks=0
:生产者请求立即返回,不需要等待任何确认。这种方式有最高的吞吐率,但不保证消息发送成功。acks=1
:只要集群的leader分区副本接收到了消息,就会向生产者发送一个成功响应的ack。这种方式提供了不错的持久性保证和吞吐率。acks=-1
或acks=all
:leader节点会等待所有同步中的副本(ISR)确认之后再确认消息发送完成。这种方式提供了最高的消息持久性保证,但吞吐率可能较差。
buffer.memory:
描述:生产者用于缓存消息的缓冲区大小。
默认值:32MB(33554432字节)
compression.type:
描述:生产者生成数据时可使用的压缩类型。
选项:
none
(不压缩)、gzip
、snappy
、lz4
等。
retries:
描述:生产者发送消息失败重试的次数。
说明:重试时生产者会重新发送之前由于瞬时原因(如元数据信息失效、副本数量不足等)出现失败的消息。
batch.size:
描述:生产者按批次发送消息时,每个批次的大小。
默认值:16KB
linger.ms:
描述:生产者在发送批次前的等待时间。
默认值:0ms(表示不做停留)
建议:为了减少网络IO,提升整体性能,可以设置为5~100ms。
消费者(Consumer)参数
bootstrap.servers:
描述:消费者连接Kafka集群的入口参数,通常是Kafka集群中broker的地址。
group.id:
描述:消费者所属的消费者组名称。
说明:消费者通过group.id来区分不同的消费者组,实现发布/订阅的通信方式。
enable.auto.commit:
描述:是否自动提交消息偏移量。
默认值:true
auto.commit.interval.ms:
描述:消费者偏移量向Kafka提交的频率。
默认值:5000ms(5秒)
auto.offset.reset:
描述:当Kafka中没有初始偏移量或当前偏移量在服务器中不存在时,消费者的处理方式。
选项:
earliest
:自动重置偏移量到最早的偏移量。latest
:自动重置偏移量为最新的偏移量(默认)。none
:如果消费组原来的偏移量不存在,则向消费者抛异常。
fetch.min.bytes:
描述:消费者获取服务器端一批消息最小的字节数。
默认值:1个字节
fetch.max.wait.ms:
描述:如果没有从服务器端获取到一批数据的最小字节数,该时间到后仍然会返回数据。
默认值:500ms
fetch.max.bytes:
描述:消费者获取服务器端一批消息最大的字节数。
默认值:50MB(52428800字节)
通用参数
replica.lag.time.max.ms:
描述:ISR中,如果Follower长时间未向Leader发送通信请求或同步数据,则该Follower将被踢出ISR的时间阈值。
默认值:30秒
log.retention.hours:
描述:Kafka中数据保存的时间(小时级别)。
默认值:7天(注意:这里可能是以小时为单位的默认值,但通常Kafka以天为单位设置更常见,如log.retention.days,默认值也是7)
log.segment.bytes:
描述:Kafka中log日志划分成块的大小。
默认值:1GB
num.io.threads:
描述:负责写磁盘的线程数。
默认值:8
max.request.size:
描述:请求的最大字节数。
receive.buffer.bytes 和 send.buffer.bytes:
描述:TCP接收和发送缓冲区的大小。
其他重要参数
default.replication.factor:
描述:分区的总的副本个数。
min.insync.replicas:
描述:ISR列表中最少的在线副本的个数(含leader)。当在线的副本个数小于min.insync.replicas时,生产者发送消息会失败。
max.in.flight.requests.per.connection:
描述:生产者在单个连接上能够发送的未响应请求的个数。
默认值:5
说明:设置为1可以避免生产者发送消息乱序,虽然吞吐量降低了,但安全性得到了提升。
session.timeout.ms:
描述:Kafka消费者和coordinator之间连接超时时间。
默认值:45秒
说明:超过该值,消费者被移除,消费者组执行再平衡。
max.poll.interval.ms:
描述:消费者处理消息的最大时长。
默认值:5分钟
说明:超过该值,消费者被移除,消费者组执行再平衡。
这些参数的设置需要根据具体的业务场景和需求进行调整,以达到最佳的性能和可靠性。同时,Kafka也提供了丰富的监控和调优工具,可以帮助用户更好地理解和优化Kafka集群的运行状态。
评论区