以下是一个适用于生产环境的 Kafka 参数配置模板,包含核心参数的推荐值与设置依据,适合用于中高负载场景下的 Kafka 集群(例如微服务消息通信、日志采集、流式数据处理等)。该模板兼顾了高可用性、性能与安全性。
✅ Kafka 生产环境配置推荐模板
🗂️ 基础功能配置
参数名 | 推荐值 | 原因与参考依据 |
---|
auto.create.topics.enable | false | 防止拼写错误或误操作自动创建无用 topic,建议由 CI/脚本显式创建。 |
delete.topic.enable | true | 便于测试和配置管理,可安全清理不再使用的 topic。 |
num.partitions | 6-12 | 增加分区提高并发能力,建议与消费线程数保持对应。 |
default.replication.factor | 3 | Kafka 高可用标准配置,容忍1台 broker 宕机。 |
🔐 安全性配置
参数名 | 推荐值 | 原因与参考依据 |
---|
allow.everyone.if.no.acl.found | false | 未配置 ACL 时默认拒绝访问,符合最小权限原则(Principle of Least Privilege)。 |
authorizer.class.name | kafka.security.auth.SimpleAclAuthorizer | 启用 ACL 权限控制(若使用安全机制)。 |
📦 性能优化配置
参数名 | 推荐值 | 原因与参考依据 |
---|
message.max.bytes | 10MB(10485760) | 支持中大消息传输,需与生产者及 replica.fetch.max.bytes 保持一致。 |
log.segment.bytes | 512MB ~ 1GB | 增加 segment 滚动频率,提升压缩与删除效率。 |
num.io.threads | = CPU核心数 | 提升磁盘吞吐处理能力。 |
num.network.threads | = CPU核心数 / 2 或根据网络流量调优 | 处理网络请求瓶颈,适合高并发场景。 |
log.retention.hours | 168 | 一周保留,适合日常业务日志需求,可根据磁盘容量调整。 |
log.retention.bytes | 磁盘总容量 × 80% / topic 数 | 控制磁盘使用,避免超出空间。 |
compression.type | lz4 / zstd | 兼顾压缩率和性能,lz4 更快,zstd 压缩率更高。 |
🛡️ 一致性与可用性配置
参数名 | 推荐值 | 原因与参考依据 |
---|
min.insync.replicas | 2(假设副本数为 3) | 配合 acks=all 使用,防止数据丢失。 |
unclean.leader.election.enable | false | 避免选出非最新数据的副本作为 leader,保护一致性。 |
auto.leader.rebalance.enable | true | 自动平衡 leader 分布,防止负载集中在部分 broker。 |
⏱️ 超时与连接相关配置
参数名 | 推荐值 | 原因与参考依据 |
---|
request.timeout.ms | 30000 - 60000 | 增大超时时间,避免高负载下的误超时。 |
replica.lag.time.max.ms | 10000 | 控制副本落后太久时不再同步(影响 ISR)。 |
🔧 Topic 层面建议
建议通过命令或 API 显式创建 topic,并指定:
kafka-topics.sh \
--create \
--topic your_topic \
--partitions 12 \
--replication-factor 3 \
--config retention.ms=604800000 \
--config cleanup.policy=delete
📖 参考依据
- Kafka 官方文档:Apache Kafka Configuration Reference (kafka.apache.org)
- Confluent Recommendations:Confluent Production Guidelines
- 阿里中间件 Kafka 实践经验:
建议副本 3、副本同步数 2、关闭自动建 topic、防止脏 leader。 - 性能测试:社区经验表明
lz4
压缩在 CPU 和网络之间取得良好平衡。 - 实际运维经验:较多生产集群(如金融、电商)普遍使用
3副本+6分区+压缩+ACL
配置。