在 Debian 上部署 Kafka 时,要“保证消息不丢”,需要从 生产者、Broker、消费者、运维 四个层面一起配置。下面按实战角度说明。
replication.factor=3
min.insync.replicas=2
unclean.leader.election.enable=false
acks=all
acks=all:Leader + 所有 ISR 副本都写入才返回成功retries=2147483647
retry.backoff.ms=100
enable.idempotence=true
max.in.flight.requests.per.connection=5
(开启幂等时 Kafka 会自动限制)
enable.auto.commit=false
处理成功后再提交:
consumer.commitSync();
❌ 不要:
enable.auto.commit=true
kafka-topics.sh --create \
--topic order-topic \
--partitions 6 \
--replication-factor 3 \
--config min.insync.replicas=2 \
--bootstrap-server localhost:9092
Kafka 依赖页缓存 + 顺序写,一般 不需要 fsync 但:
noatime 错误配置kafka-dump-logKafka 不丢消息 = acks=all + 多副本 + min.insync.replicas + 手动提交 offset
如果你愿意,我可以:
你现在用的是 Kafka 几版本?单机还是集群?