Kafka生产者优化要点
一 核心配置优先级
二 关键参数与建议值
| 参数 | 作用 | 建议值/范围 | 影响与取舍 |
|---|---|---|---|
| acks | 确认机制 | 0/1/all(-1) | 0:吞吐最高、可能丢;1:折中;all:最可靠、延迟最高 |
| batch.size | 单批最大字节数 | 16KB–1MB(起步 32KB–128KB) | 批越大吞吐越高、延迟越大 |
| linger.ms | 发送前等待时间 | 5–100ms(延迟优先可 0–5ms) | 允许等待可提升批利用率 |
| compression.type | 压缩算法 | lz4/snappy/zstd | 降网络/磁盘 IO,增 CPU |
| buffer.memory | 发送缓冲总大小 | 32MB–128MB | 防高并发阻塞,过大浪费内存 |
| max.request.size | 单请求最大字节数 | 依业务调大(如 10MB) | 需与 Broker 端限制一致 |
| retries / retry.backoff.ms | 重试次数/退避 | 3–10 / 100–500ms | 提升容错,避免雪崩 |
| max.in.flight.requests.per.connection | 未确认请求上限 | 幂等时 1–5;需严格有序用 1 | 影响吞吐与乱序容忍度 |
| enable.idempotence | 幂等生产 | true(推荐) | 避免重复,需配合重试/顺序策略 |
| Topic 级:min.insync.replicas | 最小同步副本数 | 2–N-1(如 3 副本设 2) | 与 acks=all 配合保障不丢 |
| 分区数 | 并行度上限 | 与 Broker/消费者 能力匹配 | 过多分区增管理开销与延迟波动 |
| 以上范围需结合实际负载压测微调,避免一刀切。 |
三 代码与客户端实践
四 配套与压测
五 场景化配置示例