消息队列 MQ

一、介绍

        消息队列(Message Queue,简称MQ),指保存消息的一个容器,本质是个队列(FIFO,先进先出)。消息队列是一种异步的服务间通信方式,适用于无服务器和微服务架构。消息在被处理和删除之前一直存储在队列上。每条消息仅可被一位用户处理一次。消息可以很简单,如只包含文本字符串,也可以很复杂,可能包含嵌入对象。消息队列可被用于分离重量级处理、缓冲或批处理工作以及缓解高峰期工作负载。

二、消息队列架构

        队列架构涉及三类角色:

        Producer 消息生产者:负责产生和发送消息到 Broker;
        Broker 消息处理中心:负责消息存储、确认、重试等,一般其中会包含多个 queue
        Consumer 消息消费者:负责从 Broker 中获取消息,并进行相应处理;

        生产者发送消息流程:
                生产者和 Broker 建立TCP链接;
                生产者和 Broker 建立通道;
                生产者通过通道消息发送给 Broker,由Broker的Exchange模块将消息进行转发;
                Exchange 将消息转发到指定的Queue(队列);

         消费者接收消息流程:                
                消费者和 Broker 建立TCP链接;
                消费者和 Broker 建立通道;
                消费者监听指定的Queue(队列);
                当有消息到达Queue时,Broker默认将消息推送给消费者;
                消费者接收到消息;
                ack 回复;

三、应用场景

        消息队列主要用来暂存生产者生产的消息,供后续其他消费者来消费。主要有两个功能:暂存(存储)、队列(有序:先进先出)。其他大部分场景对数据的消费没有顺序要求,主要用它的暂存能力 。应用场景主要有以下三个:异步处理数据、系统应用解耦、业务流量削峰。

        异步处理:目的是减少请求响应时间,实现非核心流程异步化,提高系统响应性能。如生活中送快递的例子;同步:就是快递员把快递送到目的地后,需要联系收货人来签收快递,如果收货人此时有空,那一切都很顺利。但如果收货人此时不方便就白跑一趟或等着;异步:消息队列就充当快递柜,快递员需要送快递时,将快递投到快递柜,然后短信或者电话通知收货人,他就可以继续去派送下一单。而对于收货人而言,也可以根据具体方便的时间来取件。这样一来,二者完全异步了。
        应用解耦:使用了消息队列后,只要保证消息格式不变,消息的发送方和接收方并不需要彼此联系,也不需要受对方的影响,即解耦。
        流量削峰:系统的峰值流量大多集中于一小段时间内,为了防止系统在短时间内的峰值流量冲垮,往往采用消息队列来削弱峰值流量,相当于消息队列做了一次缓冲。

四、消费模型

        消息到达Broker后,最终还是需要Consumer去消费消息,有两种主要消费模型:单播和广播。单播,就是点到点;而广播,是一点对多点。如果Consumer端把消息消费了,除了需要消息确认,还涉及到比如:重复消息、顺序消息、消息延迟、事务消息等需要考虑的高级特性。

        点对点模式:点对点模用于 消息生产者 和 消息消费者 之间 点到点 的通信,包含三个角色:
 

        消息队列(Queue)
        发送者(Sender)
        接收者(Receiver)

        每个消息都被发送到一个特定的队列,接收者从队列中获取消息。队列保留着消息,可以放在 内存 中也可以 持久化,直到他们被消费或超时;消息被消费以后,queue中不再有存储。


        发布/订阅模式:消息生产者(发布)将消息发布到topic中,同时有多个消息消费者(订阅)消费该消息。和点对点方式不同,发布到topic的消息会被所有订阅者消费。
        消息分类的标签称为topic(主题),一个topic中存放的是同一类消息。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值