前言导读消息队列是分布式系统核心中间件、高并发架构必备组件中高级面试必问架构选型、削峰填谷、解耦异步、可靠性保障。多数开发者只会简单收发消息不了解MQ核心作用、消息丢失、重复消费、顺序性、积压问题、集群高可用面试架构题极易失分。本篇全覆盖MQ核心思想、主流中间件对比、生产问题解决方案、架构设计、高频真题吃透分布式消息架构搞定高并发异步业务设计。一、消息队列核心作用 必考指数★★★★★MQ是分布式系统异步通信中间件四大核心作用贯穿所有业务架构业务解耦上下游系统通过消息通信无需硬编码依赖拓展灵活异步提速非核心业务异步化缩短主流程响应时间提升吞吐量削峰填谷瞬时高并发流量缓存队列平稳消费保护后端服务流量消峰、事件驱动适配秒杀、订单、日志、通知、异步任务场景二、主流MQ对比RabbitMQ/RocketMQ/Kafka 必考指数★★★★★RabbitMQ社区成熟、可靠性极高、消息机制丰富适合金融、支付高可靠场景吞吐量一般RocketMQ阿里开源、高可靠、高并发、支持事务消息、定时消息适配电商业务主流选型Kafka超高吞吐量、分区架构、适合日志、大数据、流式计算场景可靠性略低生产选型业务消息优先RocketMQ日志流式处理优先Kafka金融高可靠优先RabbitMQ。三、MQ四大生产核心问题 必考指数★★★★★1、消息丢失问题与解决方案丢失环节生产者发送、Broker存储、消费者消费。解决方案生产者重试ACK确认、Broker持久化、消费者手动ACK、集群高可用全链路保障消息不丢。2、消息重复消费与幂等性网络超时、重试机制导致重复消费业务必须保证幂等。解决方案唯一消息ID去重、业务唯一键幂等、状态机控制、分布式锁防重。3、消息顺序性保障全局顺序单分区/单队列保证局部顺序业务分片、有序投递、顺序消费保证核心流程有序。4、消息积压解决方案积压成因消费者消费慢、故障停机、消息激增。解决方案扩容消费者、批量消费、优化消费逻辑、死信队列兜底、临时分流处理。四、死信队列与延时队列 必考指数★★★★死信队列消息消费失败、超时、重试耗尽转入死信队列用于异常消息兜底、故障复盘。延时队列实现延时任务如订单超时取消、超时关闭、延时通知替代定时任务。五、本篇高频面试真题必背1、消息队列的核心作用核心四大作用业务解耦、异步提速、削峰填谷、事件驱动。通过异步通信实现系统解耦缩短主链路耗时缓存瞬时高并发流量提升系统吞吐量与稳定性是分布式高并发架构核心组件。2、如何保证消息不丢失全链路保障1、生产者开启重试、ACK确认、失败日志记录2、Broker消息持久化、集群副本同步3、消费者手动ACK、消费成功再确认、异常重试兜底杜绝任一环节消息丢失。3、如何解决消息重复消费MQ天生不保证不重复只保证至少一次消费业务必须幂等。解决方案利用消息唯一ID做幂等去重、基于业务主键防重、状态机判断消费状态、分布式锁控制单次消费保证重复调用不产生脏数据。4、消息大量积压如何处理1、紧急扩容消费者节点提升消费能力2、优化消费逻辑批量消费、减少IO耗时3、暂停无效消息生产、分流非核心消息4、积压消息迁移临时队列快速消化5、排查消费卡顿、阻塞、异常问题根治积压根源。 本篇章节小结本篇全覆盖MQ核心作用、主流中间件对比、消息丢失、重复消费、顺序性、消息积压、死信延时队列分布式架构核心考点。重点掌握生产四大问题解决方案、中间件选型、异步架构设计思路具备分布式异步业务设计、线上MQ故障排查、架构优化能力搞定分布式面试架构类提问。