开发者学堂课程【全面讲解 Spring Cloud Alibaba 技术栈(知识精讲+项目实战)第四阶段:RocketMQ 核心架构和概念】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/686/detail/11904
RocketMQ 核心架构和概念
1、画图解释
安装过程只要拿到对应的安装包进行解压缩,启动主要启动两个组建,一个叫 NameServer,一个叫 Broker,以画图的形式解释两个概念并且描述 RocketMQ 内部是如何工作的。
首先画一下消息生产者和消费者,生产者的作用是生产和投递消息,消费者是从 MQ 接收并且消费消息。
消息生产者和消费者是通过MQ 进行沟通,把 MQ 放在中间,这就是 RocketMQ,在 RocketMQ中有两个核心的组件,第一个叫 Broker,Broker 是整个 RocketMQ 的核心组件,它的作用是用来接受投递,中间还有存储消息Broker 会从消息生产者接收消息并且存储起来,然后向消息消费者进行消息的投递,这是第一个组件。还有一个组件叫 NameServer,它的作用是来管理 Brocker。
消息的传递流程,首先消息生产者将消息生产出来以后,要去向Broker 投递消息,目前不知道 Broker 在哪里,如果想投递消息必须通过 NameServer 去获取 Broker 的地址,也意味它首先是跟它打交道,会消息生产者获取 Broker,获取完毕以后就知道 Broker 的位置,接下来会将消息传递给 Broker,右侧同样消息消费者想要消费消息也是需要先从 NameServer 中获取 Broker,从里面去获取相关的 Broker 信息,Broker 信息是由 Broker 核心组件提前注册到 NameServer 里面的,中间写上 向 NameServer 提前注册自身信息,消费者可以从 Broker 里面获取消息进行消费。四个核心组件已经讲明白,两个是自己的,两个是 MQ 的。
消息在 Broker 中的存储,在 Broker 里面有一个一个的队列称为叫 message queue。massage queue 在逻辑上进行了划分,划分出来的叫做一个一个的主题 topic 在逻辑上进行的分类号,右边也是一个 topic。
消息生产者比喻成寄件人,消息消费者对应的是收件人,中间 Broker相当于邮递员,上面相当于邮局管理邮递员,需要从邮局获取邮递员具体信息,NameServer 相当于邮递员的邮箱,topic 相当于是地区的划分比如北京的、山东邮件地址不一样,每个 massage queue 相当于是一封封的邮件,在 message 里面还有更加详细的概念叫message,是具体的消息对象可以认为是邮件里面的文字内容。
2.官方概念
如上图所示,整体可以分成4个角色,分别是:NameServer,Broker,Producer,Consumer.
(1)Broker(邮递员)
Broker 是 RocketMQ 的核心,负责消息的接收,存储,投递等功能
(2)NameServer(邮局)
消息队列的协调者,Broker 向它注册路由信息,同时 Producer 和Consumer 向其获取路由信息
(3)Producer(寄件人)
消息的生产者,需要从 NameServer 获取 Broker 信息,然后与Broker 建立连接,向 Broker 发送消息
(4)Consumer(收件人)
消息的消费者,需要从 NameServer 获取 Broker 信息,然后与Broker 建立连接,从 Broker 获取消息
(5)Topic(地区)
用来区分不同类型的消息,发送和接收消息前都需要先创建 Topic,针对 Topic 来发送和接收消息
(6)Message Queue(邮件)
为了提高性能和吞吐量,引入了 MessageQueue,一个 Topic 可以设置一个或多个 Message Queue,这样消息就可以并行往各个Message Queue 发送消息,消费者也可以并行的从多个MessageQueue 读取消息
(7)Message(具体文字)
Message 是消息的载体。
(8)Producer Group
生产者组,简单来说就是多个发送同一类消息的生产者称之为一个生产者组。
(9)Consumer Group
消费者组,和生产者类似,消费同一类消息的多个 consumer 实例组成一个消费者组。