Skip to content

消息队列概述★

MQ 定位、核心概念、选型框架。

Updated View as Markdown
For humans

消息队列概述

MQ 是分布式系统的“缓冲区”和“解耦器”。面试主线:解决什么、核心概念、主流选型(本分类以 Kafka 为主线,见系统设计篇的异步化章节)。

MQ 的三大价值

价值 说明 例子
削峰填谷 峰值流量入队,下游匀速消费 秒杀、抢购
解耦 生产者不关心消费者 下单 → 通知/积分/搜索
异步提速 耗时操作后台化 发邮件、报表生成

核心概念(Kafka 视角)

Topic 分区分发: 并行与扩展的基石

  • Topic:消息的逻辑分类(订单、日志)
  • Partition:Topic 的物理分片(并行单位、顺序单位)
  • Offset:分区内消息的序号(消费位置)
  • Consumer Group:一组消费者分摊分区(见消费组篇)
  • Broker:Kafka 服务节点(集群)

选型框架

场景 选择
高吞吐、日志流、大数据管道 Kafka
业务消息、灵活路由、中小规模 RabbitMQ
云原生、多租户、低延迟 Pulsar
轻量、随应用部署 Redis Stream

本分类以 Kafka 为主线(架构/生产者/消费组/高吞吐/可靠性/顺序事务),死信延迟篇覆盖通用机制,对比篇给出全选型。

消息模型

  • 队列模型(RabbitMQ):一条消息一个消费者(点对点)
  • 发布订阅模型(Kafka):一条消息广播给所有订阅组,组内竞争
  • Kafka 的消费组 = 队列 + 发布订阅的结合(组内竞争、组间广播)

面试追问

  1. MQ 解决什么? 削峰填谷、解耦、异步提速。三价值
  2. Topic 和 Partition? Topic 逻辑分类,Partition 物理分片(并行 + 顺序单位)
  3. 队列和发布订阅? 点对点 vs 广播。Kafka 消费组两者兼有
  4. 什么时候不该用 MQ? 强一致事务场景(MQ 是最终一致)、简单同步调用。引入 MQ 增加复杂度
  5. 选型看什么? 吞吐、路由需求、运维成本。高吞吐日志用 Kafka,业务消息用 RabbitMQ
Navigation

Type to search…

↑↓ navigate↵ selectEsc close