一、什么是 MQ

MQ的概念

MQ (Message Queue)消息队列,是在消息传输过程中存储消息的容器。多用于分布式系统之间的通信。
队列是基础数据结构中 “先进先出” 的一种数据结构。
消息对列,指把要传输的数据消息放在队列中,用队列机制来实现消息传递。

MQ基本模型

在这里插入图片描述
上图中,“P”是我们的生产者,“C”是我们的消费者,中间就是存放消息的消息队列。
生产者将消息发送到MQ,MQ将消息推送给指定的消费者,或者消费者去MQ 拉取特定的消息。
生产者和消费者可以当做客户端,MQ就是服务端(也可以叫作消息中间件)。

MQ的作用

1、解耦容错

未使用MQ前,库存系统、支付系统、物流系统其中任何一个子系统出现故障,都会造成下单操作异常。
在这里插入图片描述
使用MQ后,订单系统和库存系统、支付系统、物流系统进行了系统间的解耦,任何一个子系统出现故障不影响订单系统和其它子系统。比如物流系统出现故障了,需要几分钟进行修复,此时物流系统要处理的数据保存在了MQ中,用户的下单操作可以继续进行,当物流系统恢复后,继续处理订单信息即可。下单用户感受不到物流系统发生的故障,提高系统的容错性。
在这里插入图片描述

2、异步提速

未使用MQ前,库存系统、支付系统、物流系统之间是同步(必须一个接一个)处理数据的,总共花费时间是3*300ms+20ms=920ms;
在这里插入图片描述
使用MQ后,我们在库存系统处理数据的同时,可以进行支付系统、物流系统处理数据,完成系统间的异步处理数据。总共花费时间是300ms+20ms+5ms=325ms;
在这里插入图片描述

3、削峰限流

比如:订单系统最多能处理1000次/s订单,这在平常时段没问题,但在高峰期,如果有1万次下订单,此时系统是处理不了的,否则系统会发生故障。使用MQ做缓冲,这时消息会积压在MQ服务器,在高峰期过后一段时间内,消息会一直维持在服务器能承受的范围内 ,直到消费完积压的消息,提升系统的稳定性。
在这里插入图片描述

MQ劣势

1、系统可用性降低。

系统引入的外部依赖越多,系统的稳定性越差。一旦MQ宕机,就会对业务造成影响。需要利用各种手段提高MQ的高可用。

2、系统复杂度提高

大大提高了系统的复杂度,以前系统间是同步的远程调用,现在是通过MQ进行异步调用。需要处理消息被重复消费以及防止消息丢失的问题。

  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值