开篇:消息队列在生产环境最容易踩的坑
消息队列是分布式系统的血管。用得好,系统解耦、异步高效、削峰填谷。用不好,消息丢了不知道、重复消费造成脏数据、积压百万条把下游拖垮。
这篇文章从实战角度出发,把 MQ 在生产环境最容易遇到的几个场景拉出来过一遍:消息丢了怎么排查、重复消费怎么做幂等、积压了怎么快速消化、Kafka 吞吐量怎么优化。每个场景都带真实方案。
一、消息丢失场景与排查
消息从生产到消费,要经过三个环节:生产者发送、Broker 存储、消费者消费。每一个环节都可能丢消息。
生产者端丢失
生产者发送消息时,网络抖动导致发送失败,或者发送成功但没收到 Broker 的 ACK 就认为失败了。
大约 25 分钟