# 知识要点

首先我们 学习 MQ 消息中间件不要陷入技术陷阱,先从日常生活中的例子出发,来理解它的原理。

只要真正理解了原理,再结合技术实现去了解其架构。

# 原理解读

MQ 是为了解决大型软件组件之间的通信问题而产生的一种技术哲学:对海量的、不急迫的通信请求,设置一个中间环节更有效率。

MQ 的原理一句话也可以说清楚:大型程序运行的时候,组件之间需要发送消息相互通信,频繁的直接通信会导致系统变得复杂而且运行效率低下。故,为了解决复杂性和效率,有人就发明了 MQ 这种中间程序,把消息比作信件,MQ就好比邮局。

一个邮局所需的组织架构,对应软件世界的 MQ 就需要具备对应的架构:

  • MQ 是消息传递服务(消息内容+发件人+收件人)
  • MQ 为消息的发送人(生产者)和消息接收人(消费者)的中间桥梁
  • MQ 支持分布式节点就比邮局的遍布全国的中转中心

故,一个 MQ 系统主要是由:消息存储池 + 消息订单处理中心 组成,消息订单处理中心好比邮局企业的大脑,一切的业务实践精华都在大脑中。

对 RocketMQ 而言,NameServer 就是消息订单处理中心, Broker 就是消息存储池。

# 分布式

RocketMQ 来源于阿里的电商业务最佳实践,故其天然有分布式的基因,所以你看到的 RocketMQ 的文档几乎理解起来非常困难。

如果去繁就简,先不考虑分布式架构,RocketMQ 与 RabbitMQ 的差异也不大。

阿里做覆盖全国网络的菜鸟物流用于处理现实世界的商品传递,阿里云做分布式MQ用于处理系统的消息传递本质上是一个原理。