Kafka 的“消息不丢”不是一个配置能解决的,而是要在生产者 → Broker → 消费者三个环节同时做保证。
下面从“为什么会丢”到“怎么解决”做一次完整拆解。
一、先明确:Kafka 消息丢失发生在哪几层?
一条消息的生命周期:
Producer 发送 → Broker 存储/复制 → Consumer 拉取 → Consumer 提交 offset
所以丢失可能发生在:
生产者端:发送失败、确认策略太弱、缓冲丢失、重试不合理
Broker 端:副本数不足、ISR 门槛太低、unclean leader 选举、刷盘策略
消费者端:offset 提前提交、自动提交、rebalance 时处理不当
端到端语义:重复消费、消费逻辑非幂等、事务缺失