【RabbitMQ】什么是RabbitMQ?RabbitMQ有什么用?应用场景有那些?

简介: 【RabbitMQ】什么是RabbitMQ?RabbitMQ有什么用?应用场景有那些?

一、什么是RabbitMQ?


答:RabbitMQ简称MQ是一套实现了高级消息队列协议的开源消息代理软件,简单来说就是一个消息中间件。是一种程序对程序的通信方法,其服务器也是以高性能、健壮以及可伸缩性出名的Erlang语言编写而成。


二、RabbitMQ是干什么的?


答:RabbitMQ简单来说就是一个消息队列中间件,用来保存消息和传递消息的一个容器。在此过程中充当一个中间人的作用。


而队列的主要目的就是提供正确的路由来保证消息的传递;如果发送消息时消费者不可用的话,默认情况下该消息将会一直被存储在队列中,直到消费者消费为止。


那么同时呢,如果设置了消息存活的时间,即消息的有效期。在此有效期间消息如果还没有被消费的话,那么该消息就会变成死信,由死信交换机接收。而绑定死信交换机的队列则称为死信队列。


三、RabbitMQ的常见作用有那些?


答:RabbitMQ的常见作用有三种,分别是服务间解耦、实现异步通信、流量削峰。


主要实现了消费者和生产者之间的解耦,发送异步消息,高并发访问解决流量削锋等问题。实现高性能,高可用,可伸缩和最终一致性架构。是大型分布式系统不可缺少的中间件。


常见的应用常见有:用户订单,库存处理;用户注册,发送手机短信邮件;商品秒杀和抢购等...


四、RabbitMQ的应用场景有那些?


场景一:用户订单,库存处理。【服务间解耦】


使用MQ前:系统正常时,用户下单,订单系统调用库存系统进行删减操作,操作成功,将成返回消息,提醒下单成功。系统异常时,库存系统将无法访问,导致订单删减操作无法执行,最终导致下单失败。


使用MQ后:订单系统和库存系统之间不在互相影响,独立运行,达到了应用解耦的目的。订单系统只需要将下单消息写入MQ,就可以直接执行下一步操作。这时即使库存系统出现异常也不会影响订单系统的操作,且下单的库存删减记录,将会被永久保存到MQ中,直到库存系统恢复正常,从MQ中订阅下单消息,进行消费成功为止。


使用MQ前:


c879132e306740a0b7dde08bfb6937be.png


使用MQ后:


a592522876194e928b902aec4a901e26.png


场景二:用户注册,发送手机短信,邮件。【实现异步通信】


使用MQ前:整个操作流程,全部在主线程完成。点击用户注册 --》 入库添加用户 --》发送邮件 --》发送短信。每一步都需要等待上一步完成后才能执行。且每一步操作的响应时间不固定,如果请求过多,会导致主线程请求耗时很长,响应慢,甚至会导致死机的情况出现,严重影响了用户的体验。


使用MQ后:主线程只需要处理耗时较低的入库操作,然后把需要处理的消息写进MQ消息队列中,然后由不同的独立的邮件系统和发短信系统,同时订阅消息队列中的消息进行消费。这样通过消息队列作为一个中间人去保存和传递消息,不仅仅耗时低消耗的资源也很少且单个服务器能够承受的并发请求将更多。


22af9d63d0b24ad49caaa20ab70d3ae5.png


场景三:商品秒杀和抢购。【流量削峰】


流量削峰是消息队列中常用的场景 一般在秒杀或团购活动中使用广泛。


使用MQ前:对于秒杀、抢购活动,用户访问所产生的流量会很大,甚至会在同一时间段出现上万上亿条请求,这股瞬间的流量暴涨,我们的应用系统配置是无法承受的,会导致系统直接崩溃死机。


例如:A系统平时每秒请求100个,系统稳定运行; 但是晚上8点有秒杀活动 ,每秒并发增至1万条 ,系统最大处理每秒1000条 于是导致系统崩溃。


使用MQ后:我们在大量用户进行秒杀请求时,将那个巨大的流量请求拒在系统业务处理的上层,并将其转移至MQ中,而不是直接涌入我们的接口。在这里MQ消息队列起到了缓存作用。


例如:100万用户在高峰期,每秒请求5000个,将这5000个请求写入MQ系统每秒只能处理2000请求,因为MySQL只能处理2000个请求 ; 系统每秒拉取2000个请求 不超过自己的处理能力即可。


使用MQ前:


f523b1f2b1934f129debde3bc54a9056.png


使用MQ后:

ed3a877420094941aee3a598deb1598c.png

相关实践学习
RocketMQ一站式入门使用
从源码编译、部署broker、部署namesrv,使用java客户端首发消息等一站式入门RocketMQ。
消息队列 MNS 入门课程
1、消息队列MNS简介 本节课介绍消息队列的MNS的基础概念 2、消息队列MNS特性 本节课介绍消息队列的MNS的主要特性 3、MNS的最佳实践及场景应用 本节课介绍消息队列的MNS的最佳实践及场景应用案例 4、手把手系列:消息队列MNS实操讲 本节课介绍消息队列的MNS的实际操作演示 5、动手实验:基于MNS,0基础轻松构建 Web Client 本节课带您一起基于MNS,0基础轻松构建 Web Client
相关文章
|
3天前
|
消息中间件 XML 算法
二、RabbitMQ 应用场景
二、RabbitMQ 应用场景
41 0
|
3天前
|
消息中间件 RocketMQ
RocketMQ 的应用场景
RocketMQ 的应用场景
106 0
|
10月前
|
消息中间件 Dubbo 应用服务中间件
RabbitMQ 六种工作模式与应用场景
RabbitMQ 六种工作模式与应用场景
304 0
|
10月前
|
消息中间件 运维 Java
rabbitMQ消息中间件的延时队列以及死信队列的使用和应用场景
rabbitMQ消息中间件的延时队列以及死信队列的使用和应用场景
|
12月前
|
消息中间件 Cloud Native RocketMQ
带你读《企业级云原生白皮书项目实战》——6.3.3 RocketMQ 事务消息的金融应用场景(1)
带你读《企业级云原生白皮书项目实战》——6.3.3 RocketMQ 事务消息的金融应用场景(1)
157 0
|
12月前
|
消息中间件 存储 Cloud Native
带你读《企业级云原生白皮书项目实战》——6.3.3 RocketMQ 事务消息的金融应用场景(2)
带你读《企业级云原生白皮书项目实战》——6.3.3 RocketMQ 事务消息的金融应用场景(2)
125 0
|
消息中间件 存储 城市大脑
云原生事件驱动引擎(RocketMQ-EventBridge)应用场景与技术解析
RocketMQ 给人最大的印象一直是一个消息引擎。那什么是事件驱动引擎?为什么我们这次要推出事件驱动引擎这个产品?他有哪些应用场景,以及对应的技术方案是什么?本文我们就一起来看下。
848 0
云原生事件驱动引擎(RocketMQ-EventBridge)应用场景与技术解析
|
消息中间件 Java 数据库
RabbitMQ延时队列应用场景
RabbitMQ延时队列应用场景
|
消息中间件 前端开发 JavaScript
四大常用MQ的优缺点和应用场景选择
四大常用MQ的优缺点和应用场景选择
137 0
|
消息中间件 缓存 数据库
RabbitMQ 七种队列模式应用场景案例分析(通俗易懂)
与发布者进行可靠的发布确认,发布者确认是RabbitMQ扩展,可以实现可靠的发布。在通道上启用发布者确认后,RabbitMQ将异步确认发送者发布的消息,这意味着它们已在服务器端处理。
RabbitMQ 七种队列模式应用场景案例分析(通俗易懂)