系统架构师学习平台(点击这里进入)

本质:一个高性能的“异步中转站”。

二、核心技术特点

  • 异步处理:无需同步等待,主线程立即返回
  • 应用解耦:服务间不直接调用,通过消息通信
  • 流量削峰:高并发请求入队,消费者匀速处理
  • 异步通知/最终一致性:支持分布式事务
  • 广播、重试、死信队列、延时消息
  • 高可用、持久化,节点宕机不丢消息

三、核心应用场景

  • 异步处理:注册后发积分、短信、优惠券
  • 应用解耦:订单、支付、物流系统通过 MQ 通信
  • 秒杀削峰:瞬间流量入队,保护数据库
  • 分布式事务:订单支付后通知库存、物流
  • 日志收集与流式处理:日志 → Kafka → Flink/ES
  • 延时任务:订单超时未支付自动取消

四、优点 & 缺点

优点
  • 系统解耦,扩展性极强
  • 接口性能大幅提升(异步化)
  • 削峰填谷,保护下游系统
  • 分布式系统标准通信方案
  • 可重试、可回溯、可监控
缺点
  • 系统复杂度变高,需保证消息可靠性
  • 数据为最终一致性,非强一致
  • 可能出现重复消费,需保证幂等性
  • 可能消息丢失,需持久化与确认机制
  • 可能消息堆积,导致系统阻塞
  • 增加部署、监控、高可用运维成本

五、常见 MQ 对比

特性 RabbitMQ RocketMQ Kafka
开发语言 Erlang Java Scala/Java
吞吐量 极高
延时消息 支持(死信) 支持 18 个等级 不直接支持
事务消息 不支持 支持 不支持
复杂度
适用场景 通用业务、解耦、异步 电商、金融、高可靠 日志、流计算、大数据

六、一句话总结

MQ = 异步 + 解耦 + 削峰 + 最终一致性

优点:让系统更稳、更快、更易扩展

缺点:增加复杂度,必须处理:重复消费、丢失、堆积、幂等

七、MQ 高频面试 20 题(精简版)

基础概念
  • 三大核心:异步、解耦、削峰
  • 缺点:复杂度高、消息问题、最终一致、运维成本
  • RabbitMQ 易用稳定;RocketMQ 高可靠;Kafka 高吞吐
  • Push 实时性高;Pull 可控性强
消息丢失
  • 丢失阶段:生产者→MQ、MQ 内存、消费者未处理
  • 生产者:confirm 机制、回调重试
  • MQ 服务端:持久化、集群、落盘 ACK
  • 消费者:先处理业务,再手动 ACK
重复消费与幂等性
  • 原因:网络抖动、超时、重启、重试
  • 方案:唯一索引、Redis 判重、状态机、分布式锁
  • 幂等性:多次执行结果与一次相同
消息堆积
  • 解决:排查错误、扩容消费者、优化逻辑
  • 原因:消费慢、阻塞、数量不足、无限重试
  • 后果:磁盘满、无法写入、系统雪崩
延时消息 & 死信队列
  • 延时场景:订单取消、自动确认、验证码失效
  • 死信:消息被拒、过期、队列满,用于日志与重试
分布式事务 & 高可用
  • 事务:可靠消息+最终一致性,RocketMQ 支持事务消息
  • 高可用:集群、主从、持久化、副本
  • Kafka 快:顺序写、页缓存、零拷贝、批量、分区并行
Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐