RabbitMQ消息中间件学习1:基本概念与简单实战模式讲解

MQ概念

Message Queue(消息队列),在消息的传输过程中保存消息的容器,多用于分布式系统之间进行通信。

就是两个子系统之间进行通信,有两种选择,第一种是直接远程调用,第二种是借助第三方完成通信。

发送方称为生产者,接收方称为接受者。

MQ的优势

1、应用解耦
应用解耦的意思:设计系统追求高内聚低耦合的目的,那么分布式也是这样的,就是降低系统和系统之间的耦合性。
实战分析:订单系统通过远程调用子系统完成业务。
在这里插入图片描述
也就是说订单系统会和库存系统、支付系统、物流系统是耦合的,如果库存系统挂了,那么订单系统就会挂。那么就称这个系统的容错性比较低;还有如果加一个x系统,那么程序员只能修改订单系统,这样就会很难受,不停修改订单系统,可维护性降低了。
在这里插入图片描述
那么如何通过MQ来解决呢。
在这里插入图片描述
用户下单,订单系统发送一个信息给MQ,然后订单系统就会返回一个下单成功的信息给用户。然后MQ给子系统发消息。这个时候即使库存系统出错了,可能出错了一小会,然后好了,然后再从MQ中拿就好了。
如果要加X系统,那么这个时候X只需要从MQ中拿就可以了,跟订单系统没有关系的。程序员不需要从订单系统中加什么代码。

  • 增加了可维护性与解耦性。

2、异步提速
在这里插入图片描述
订单系统保存自己的数据库20ms,这个300ms是同步的过程,订单系统先调用库存系统300ms,然后支付系统300ms,然后物流系统300ms,然后再返回给订单系统。这个时候需要损耗的时间:
在这里插入图片描述
一般是200ms内得到相应才可以提升用户体验。
在这里插入图片描述
这个只需要25ms,提升了用户体验,不需要管是否成功。
1s中的吞吐量提升了。

3、削峰填谷

在这里插入图片描述
在这里插入图片描述
当进行一个秒杀的话,那么A系统就宕机了,用户体验太差了。
现在可以用MQ来消除这个峰值,这个时候用户发送请求给MQ就行。请求都是对接到MQ,MQ专门做这种事的,然后A系统再慢慢的拉1000个请求来处理,这个时候A系统就可以稳定很多了。
在这里插入图片描述

MQ的劣势

只有明确了缺点,才能更好的规避,更好的进行服务。

1、系统可用性降低
A、B子系统之间加一个MQ,可用性降低了。
这个时候还要保证MQ没有问题。
也就是说引入了外部依赖,系统的稳定性变差了,一旦MQ宕机,就会对于业务造成影响,这个时候就要保证高可用了。

2、系统复杂度提高
以前系统是同步的远程调用,现在是进行MQ异步调用。
如何保证消息没有被重复消费?怎么处理消息丢失情况?如何保证消息传递的顺序性?

3、一致性问题
A处理完业务,通过MQ给BCD发送消息,BC成功,D失败,那么如何保证消息处理的一致性呢?

上述几个问题会经常在面试中问到。所以需要好好考虑。

使用MQ需要的条件

在这里插入图片描述

常见的MQ用品

在这里插入图片描述
RabbitMQ专门适合高并发的场景。

RabbitMQ简介

基于AMQP协议,Adavanced Message Queuing Protocol 高级消息队列协议。是一个网络协议,是应用层协议的一个开放标准,为面向消息的中间件设计。基于此协议的客户端与消息中间件可传递消息,并不受客户端等限制。类比HTTP。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员洲洲

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值