RocketMQ---引言
MQ介绍
在学习RocketMQ之前,我们先来看以下MQ的意思。
MQ 是Message Queue的首字母缩写。
- Message:意思为消息,在我们生活中可以是一句话/一个短信/一个邮件;在计算机领域,放到实际业务中,就是一条数据。
- Queue:意思为队列。是一种先进先出的数据结构。
我们要学习MQ,重点是要学习Queue。
消息队列的结构如下图所示:
这里队列可以存储消息,存储消息又能干什么呢?
- 如果A给B发送一个消息,有了消息队列的存在,A就可以把消息发到消息队列里,B在消息队列里取就可以,A可以去做其他事了,这样就可以起到异步的作用。
- 如果有大量的请求来到我们的系统,我们的系统处理不过来,我们可以把这些请求放到消息队列里,就可以起到削峰限流的作用。
- 如果B依赖A,我们可以把依赖的内容放到队列里,这样就可以起到解耦合的作用。
RocketMQ介绍
RocketMQ是阿里巴巴2016年MQ中间件,使用Java语言开发,RocketMQ 是一款开源的分布式消息系统,基于高可用分布式集群技术,提供低延时的、高可靠的消息发布与订阅服务。同时,广泛应用于多个领域,包括异步通信解耦、企业解决方案、金融支付、电信、电子商务、快递物流、广告营销、社交、即时通信、移动应用、手游、视频、物联网、车联网等。
具有以下特点:
- 能够保证严格的消息顺序;
- 提供丰富的消息拉取模式;
- 高效的订阅者水平扩展能力;
- 实时的消息订阅机制;
- 亿级消息堆积能力。
其官网为: http://rocketmq.apache.org/
RocketMQ重要概念
Producer:消息的发送者,生产者;举例:发件人
Consumer:消息接收者,消费者;举例:收件人
Broker:暂存和传输消息的通道;举例:快递
NameServer:管理Broker;举例:各个快递公司的管理机构 相当于broker的注册中心,保留了broker的信息
Queue:队列,消息存放的位置,一个Broker中可以有多个队列
Topic:主题,消息的分类
ProducerGroup:生产者组 。
Broker内部简易示意图如下:
topic是一个逻辑上的概念,每个topic中有多个queue。
RocketMQ整体设计图如下: