MQ的介绍

一、MQ简介

MQ是在消息的传输过程中保存消息的容器。多用于分布式系统之间进行通信,主要功能是业务解耦

二、常见的MQ产品

RabbitMQ、RocketMQ、Kafka、ActiveMQ

三、为什么要用MQ?(MQ的优点:异步处理、应用解耦、流量削峰)

3.1、异步处理

应用场景:当用户进行注册时,需要发送注册邮件和注册短信,传统的做法有两种:1.串行的方式 2.并行的方式

3.1.1.串行方式

将注册信息写入到数据库之后,发送注册邮件,再发送注册短信,全部完成后返回给客户端,但是邮件和短信并不是必须的,客户端需要等待邮件和短信发送完毕,这时就会增加没必要的响应时间

3.1.2.并行方式

将注册信息写入数据库后,发送邮件的同时,发送短信,完成之后,返回给客户端,并行的方式相比串行的方式减少了处理的时间

3.1.3消息队列

引入消息队列后,可以将发送邮件,发送短信这些没必要的业务进行逻辑业务处理,引入消息队列处理后,响应时间大概是串行的1/3,并行的1/2。

3.2、应用解耦

应用场景 :用户购买商品下单后,订单系统需要通知库存系统,传统的做法是订单系统调用库存系统的接口

这种做法存在一个缺点:

当库存系统发生故障时,下单就会失败。订单系统和库存系统存在高耦合
引入消息队列

订单系统:用户下单后,订单系统完成持久化操作,将消息写入消息队列中,返回用户下单成功的消息

库存系统:订阅下单消息,获取下单消息,进行拆订单操作。就算库存系统出现故障后,消息队列也能 保证消息的可靠投递,不会导致消息丢失

3.3、流量削峰

**应用场景:**在购物软件举行秒杀活动时,流量会非常大,会导致应用挂掉,为了解决这个问题,一般在应用前端加入消息队列

作用

  1. 可以控制活动人数,超过一定的阀值的订单直接丢弃
  2. 可以缓解短时间的高流量压垮应用
相关推荐
Albert Edison13 小时前
【RabbitMQ】核心概念|工作流程|界面操作
分布式·rabbitmq·ruby
少许极端1 天前
消息队列5-RabbitMQ的高级特性和MQ的应用问题与解决方案-事务、消息分发的应用、幂等性保证、顺序性保证、消息积压的解决
分布式·消息队列·rabbitmq
Arva .1 天前
RabbitMQ
网络·分布式·rabbitmq
小江的记录本1 天前
【RabbitMQ】RabbitMQ核心知识体系全解(5大核心模块:Exchange类型、消息确认机制、死信队列、延迟队列、镜像队列)
java·前端·分布式·后端·spring·rabbitmq·mvc
fzb5QsS1p2 天前
Maomi.MQ 功能强大的 .NET RabbitMQ 消息队列通讯模型框架来了
rabbitmq·.net·ruby
zs宝来了3 天前
RabbitMQ 可靠性投递:持久化、确认机制与死信队列
rabbitmq·死信队列·持久化·可靠性·确认机制
BPM_宏天低代码3 天前
宏天CRM系统的消息中心:基于RabbitMQ的实践
分布式·rabbitmq
少许极端4 天前
消息队列4-RabbitMQ的高级特性-TTL机制、死信队列、延迟队列
分布式·消息队列·rabbitmq
014-code4 天前
RabbitMQ 生产端可靠投递(confirm、return、重试)
分布式·消息队列·rabbitmq
014-code4 天前
RabbitMQ 消费端幂等实战(重复消息、去重、重放怎么处理)
分布式·消息队列·rabbitmq