文章目录
一、什么是消息队列?
消息队列是将阻塞队列这样的数据结构,单独提取成一个程序,独立部署在一组服务器上。但阻塞队列是在一个进程内部进行的,而消息队列是在进程与进程(服务与服务)之间进行的。
如果有同学不知道什么是阻塞队列,点击我前面写的博客多线程的典型例子——阻塞队列进行查漏补缺。
二、当下主流的消息队列(MQ)
当下市场主流的消息队列服务器有 :
1、RabbitMQ(参考RabbitMQ来自我实现一个消息队列)
2、kafka
3、 RocketMQ(阿里自己实现的一个消息队列服务器,一般阿里公司内部在使用,阿里将RocketMQ开源在社区,一些开发者也在使用RocketMQ)
4、ActiveMQ
三、自我实现一个消息队列服务器的前期准备——需求分析
3.1 核心概念
阻塞队列、消息队列都是生产者-消费者模型的应用场景,因此实现一个消息队列的前提是首先了解以下6个概念:
1、生产者(Producer)
一般是生产资源的一方。譬如说客户端-服务器中,客户端向服务器发起请求,这里的用户请求就是生产者生产出来的资源。
2、消费者(Consumer)
获取到资源的一方。譬如说有一个分布式系统,A服务器向B服务器发起请求,B获取到A的请求后(获取到资源),根据该请求计算出响应,把响应返回给A。
3、中间人(Broker)
一般指服务器
4、发布(Publish)
生产者向中间人这里投递消息的过程
5、订阅(Subscribe)
消费者从中间人这里获取数据时这个注册的过程,叫做“订阅”
6、消费(Consume)
消费者从中间人这里取数据的动作。

现在常见的生产者-消费者模型:

3.2 broker server 核心概念
上述的这两者模型中,broker server 是最核心的部分,他负责消息的存储和转发。 一个broker server 又存在以下的核心概念:
3.2.1、虚拟主机(Virtual Host)
一个broker server 可以包含多个虚拟主机,虚拟主机的作用就类似于MySQL中的database,算是一个逻辑上的数据集合。 实际开发中,一个 broker server 可能会同时用来管理多组业务线上的数据,此时可以使用 virtual host 进行区分。
举个例子加深印象。日常我们打开百度这样的搜索引擎首页时,其首页会划分许多业务模块,点击不同的业务模块,会体验到不同的功能。譬如下图:

最低0.47元/天 解锁文章
2138

被折叠的 条评论
为什么被折叠?



