kafka参数详解

266 阅读3分钟

以下是 Kafka 的核心参数分类说明,涵盖 生产者、Broker、消费者、Topic 等模块的关键配置项,帮助您快速理解与调优。


1. 生产者参数(Producer)

参数名默认值说明
bootstrap.servers-Kafka 集群地址列表(逗号分隔),用于初始连接和元数据获取。
acks1消息持久化确认级别:0(无确认)、1(Leader确认)、all(所有ISR副本确认)。
retries2147483647发送失败时的最大重试次数。
batch.size16384 (16KB)单个批次(ProducerBatch)的最大字节数,增大可提升吞吐量。
linger.ms0批次发送前的等待时间(毫秒),增大可减少请求次数,但增加延迟。
compression.typenone消息压缩算法:gzipsnappylz4zstd
max.in.flight.requests.per.connection5单连接上未确认的请求数,幂等性场景需设为 1
enable.idempotencefalse是否启用幂等性(防止消息重复)。
transactional.idnull启用事务时需配置唯一ID,支持跨分区原子性写入。

2. Broker 参数

参数名默认值说明
log.dirs/tmp/kafka-logs日志存储目录(建议配置多个物理磁盘路径以提升性能)。
num.partitions1Topic 默认分区数(可在创建 Topic 时覆盖)。
log.retention.hours168 (7天)日志保留时间(按删除策略)。
log.retention.bytes-1Topic 级别日志保留的最大字节数(所有分区总和)。
min.insync.replicas1最小 ISR 副本数,配合 acks=all 使用。
unclean.leader.election.enablefalse是否允许非 ISR 副本成为 Leader(设为 false 防止数据丢失)。
default.replication.factor1Topic 默认副本数(生产环境建议 ≥3)。
num.network.threads3Broker 处理网络请求的线程数。
num.io.threads8Broker 处理磁盘 I/O 的线程数(建议配置为磁盘数 × 2)。

3. 消费者参数(Consumer)

参数名默认值说明
group.id-消费者组 ID,相同组内的消费者共享分区分配。
auto.offset.resetlatest无偏移量时的初始消费策略:latest(从最新消息)、earliest(从最早消息)、none(无偏移量时报错)。
enable.auto.committrue是否自动提交偏移量(建议设为 false,手动提交以精确控制)。
auto.commit.interval.ms5000自动提交偏移量的间隔时间(仅 enable.auto.commit=true 时生效)。
max.poll.records500单次 poll() 返回的最大消息数。
max.poll.interval.ms300000 (5分钟)两次 poll() 的最大间隔时间,超时触发再平衡。
fetch.min.bytes1单次拉取的最小数据量(字节),Broker 等待足够数据后返回。
fetch.max.wait.ms500Broker 等待 fetch.min.bytes 数据的超时时间。

4. Topic 参数

参数名默认值说明
cleanup.policydelete日志清理策略:delete(按时间/大小删除)、compact(按 Key 压缩保留最新值)。
retention.msnullTopic 级别日志保留时间(优先级高于全局 log.retention.hours)。
retention.bytesnullTopic 级别日志保留的最大字节数。
min.cleanable.dirty.ratio0.5触发压缩的脏数据比例阈值(仅 cleanup.policy=compact 时生效)。
delete.retention.ms86400000 (24小时)墓碑消息(Tombstone)保留时间(仅压缩策略生效)。
max.message.bytes1048588 (1MB)Topic 允许的最大消息大小(需同步配置 Broker 的 message.max.bytes)。

5. 高级参数

参数名默认值说明
replica.lag.time.max.ms30000 (30秒)Follower 副本最大同步延迟时间,超时则移出 ISR。
log.message.timestamp.typeCreateTime消息时间戳类型:CreateTime(生产者生成)、LogAppendTime(Broker 接收时间)。
offsets.topic.replication.factor3内部 Topic __consumer_offsets 的副本数(生产环境建议 ≥3)。
sasl.mechanismGSSAPISASL 认证机制(如 PLAINSCRAM-SHA-256)。
ssl.keystore.locationnullSSL 证书路径(启用 TLS 加密时配置)。

调优建议

  1. 高吞吐场景: • 生产者:增大 batch.size(如 1MB)和 linger.ms(如 50ms),启用 compression.type=lz4。 • Broker:配置多 log.dirs,优化 num.io.threads
  2. 高可靠性场景: • 生产者:acks=allmin.insync.replicas=2,启用幂等性和事务。 • Broker:unclean.leader.election.enable=falsedefault.replication.factor=3
  3. 低延迟场景: • 生产者:linger.ms=0batch.size=16KB。 • 消费者:fetch.min.bytes=1fetch.max.wait.ms=100

总结

Kafka 参数配置需根据 业务场景(吞吐量、延迟、可靠性)集群规模 灵活调整。核心原则:

  1. 生产者:平衡吞吐量与可靠性,优先批量发送与压缩。
  2. Broker:保障数据冗余与分区均衡,优化磁盘 I/O。
  3. 消费者:控制拉取频率与偏移量提交策略,避免重复消费。 建议通过监控工具(如 Prometheus、Kafka Manager)持续观察集群状态,逐步优化参数。