RabbitMQ 简介
【简单】RabbitMQ 是什么?⭐
🎯 目标等级:L2 | ⏱ 建议用时:5 min | 🏷 标签:RabbitMQ / 基础概念
💎 关键结论
RabbitMQ 是基于 AMQP 协议、用 Erlang 实现的开源消息中间件,由 Broker 通过「交换机 + 绑定 + 队列」完成消息的接收、路由与存储。选它是因为投递可靠(Confirm + 持久化 + 仲裁队列)、路由灵活、延迟低,适合解耦、削峰、异步化等业务消息场景。
🎯 目标等级:L2 | ⏱ 建议用时:5 min | 🏷 标签:RabbitMQ / 基础概念
RabbitMQ 是基于 AMQP 协议、用 Erlang 实现的开源消息中间件,由 Broker 通过「交换机 + 绑定 + 队列」完成消息的接收、路由与存储。选它是因为投递可靠(Confirm + 持久化 + 仲裁队列)、路由灵活、延迟低,适合解耦、削峰、异步化等业务消息场景。

🎯 目标等级:L2 | ⏱ 建议用时:8 min | 🏷 标签:Kafka / 基本概念
一句话:Kafka 是一个开源的分布式事件流平台,核心是「分区」这个有序不可变的日志单元。它快的根本原因是把消息系统做成了追加写的分布式日志,天然适合高吞吐场景。
🎯 目标等级:L2 | ⏱ 建议用时:5 min | 🏷 标签:RocketMQ / 基础概念
RocketMQ 是源于阿里巴巴、后捐赠给 Apache 成为顶级项目的开源分布式消息中间件,由 NameServer、Broker、Producer、Consumer 四大组件组成,原生支持事务消息、顺序消息、延迟消息等金融级特性。因为它诞生于阿里交易场景,相比 Kafka 更强调可靠性和业务消息能力。
RocketMQ、消息模型、NameServer、Broker、消息类型ActiveMQ 是 Apache 软件基金会旗下的一个开源消息中间件,由 Java 语言编写。它完全支持 JMS(Java Message Service)规范,提供了企业级的消息传递能力,是早期 Java 生态中最流行的消息中间件之一。
ActiveMQ 主要解决分布式系统中的异步通信、应用解耦、流量削峰、可靠传输等问题。通过引入消息中间件,生产者无需等待消费者处理完毕即可返回,提升了系统的响应速度;同时,生产者和消费者之间的耦合度大大降低,各自可以独立演进和扩展。
ActiveMQ 支持多种语言客户端(Java、C/C++、.NET、Python、Ruby 等),支持多种传输协议(OpenWire、STOMP、MQTT、AMQP 等),既可以作为点对点模型的消息队列使用,也可以作为发布/订阅模型的消息主题使用。它还支持持久化存储(KahaDB、JDBC、LevelDB 等)、消息事务、消息确认机制等企业级特性。
🎯 目标等级:L2 | ⏱ 建议用时:5 min | 🏷 标签:MQ / 基础概念
MQ 是一种「存储并转发消息」的异步通信中间件,把生产者与消费者解耦。理由:把同步等待变成异步缓冲,双方按各自节奏处理,系统吞吐、弹性与可维护性同时提升。
口诀:存储转发,异步解耦,缓冲背压
关键词:生产者/消费者/消息/队列/Broker/背压
链路:生产者发送消息 → Broker 接收并存储 → 消费者按需拉取处理 → 消费慢时背压反制生产者降速

消息队列(Message Queue,简称 MQ)技术是分布式应用间交换信息的一种技术。
消息队列主要解决应用耦合,异步消息,流量削锋等问题,实现高性能,高可用,可伸缩和最终一致性架构。是大型分布式系统不可缺少的中间件。
ActiveMQ、JMS、消息中间件、点对点模式、发布订阅Apache RocketMQ 是一个分布式 MQ 和流处理平台,具有低延迟、高性能和可靠性、万亿级容量和灵活的可扩展性。
RocketMQ 由阿里巴巴孵化,被捐赠给 Apache,成为 Apache 的顶级项目。

Kafka 是 Apache 的开源项目。Kafka 既可以作为一个消息队列中间件,也可以作为一个分布式流处理平台。
Kafka 用于构建实时数据管道和流应用。它具有水平可伸缩性,容错性,快速快速性。
Kafka 的存储子系统是其性能与可靠性的基石。作为一个分布式消息中间件与流处理平台,Kafka 需要在每秒数百万级消息写入的高并发场景下,仍然保证消息持久化、低延迟读取以及水平扩展能力。
Kafka 的存储设计完全有别于传统 MQ 的「消息落库」思路:它将消息以**追加写(append-only)**的方式写入分区日志文件,并借助操作系统的 Page Cache、顺序磁盘 I/O、稀疏索引以及零拷贝(sendfile)等技术,使得「磁盘存储 + 高吞吐」成为可能。同时,通过日志段(Log Segment)切分、基于保留策略的过期清理和日志压实(Log Compaction),Kafka 能够在海量数据场景下长期稳定运行。
Kafka 是一个分布式的、可水平扩展的、基于发布/订阅模式的、支持容错的消息系统。
Kafka 使用 Zookeeper 来维护集群成员的信息。每个 Broker 都有一个唯一标识符,这个标识符可以在配置文件里指定,也可以自动生成。在 Broker 启动的时候,它通过创建临时节点把自己的 ID 注册到 Zookeeper。Kafka 组件订阅 Zookeeper 的 /broker/ids 路径,当有 Broker 加入集群或退出集群时,这些组件就可以获得通知。