在Kafka配置中,有几个关键参数尤为重要,它们对Kafka的性能、可靠性和稳定性有着直接的影响。以下是一些必须关注的关键配置参数及其作用:
生产者关键配置参数
-
acks:指定了有多少个分区副本收到消息,生产者才认为消息发送成功。对消息丢失的可能性有重要影响。
acks=0
:生产者发送消息后,不会等待broker的响应,适用于允许消息丢失的场景,以提高吞吐量。acks=1
:只要broker集群的首领节点收到消息,生产者就会收到来自broker的成功响应,适用于不允许消息丢失的场景。acks=all
:只有当所有参与分区复制的节点都收到消息时,生产者才会收到来自broker的成功响应,适用于需要高可靠性的场景。
-
buffer.memory:配置生产者内存缓冲区的大小,用于缓冲要发送到broker的消息。
-
compression.type:配置压缩算法,可以降低网络传输开销和存储开销,如snappy、gzip等。
-
retries:生产者从broker收到可重试的错误时,重试的次数。
-
batch.size:发送到同一个主题、同一个分区的消息,生产者会将其放到同一个批次中,此参数指定了一个批次可以使用的内存大小。
-
max.in.flight.requests.per.connection:此参数指定了生产者在收到broker响应之前可以发送多少个小希,值越高吞吐量越大但会占用越多的内存。
Broker关键配置参数
- num.partitions:分区个数,影响消息的分布和并行处理能力。
- log.dirs:指定了Broker需要使用的日志目录路径,多个路径可以提升读写性能和故障转移能力。
- log.retention.hours/minutes/ms:控制消息数据被保存的时间。
- message.max.bytes:控制Broker能够接收的最大消息大小。
消费者关键配置参数
- fetch.min.bytes:消费者从broker获取记录的最小字节数。
- fetch.max.wait.ms:当fetch.min.bytes不满足时,从broker获取消息的最大等待时间。
- auto.offset.reset:消费者在启动时,如果没有有效的offset,将从哪里开始消费。
- max.poll.records:消费者每次poll调用返回的最大消息数。
这些关键参数在不同的业务场景下可能需要不同的配置,因此在实际应用中需要根据具体需求进行调整和优化。