MQ 消息队列

一. MQ介绍

 1.1 MQ简介

MQ全称为Message Queue,消息队列是应用程序和应用程序之间的通信方法。 

> MQ(Message Queue)消息队列,是一种用来保存消息数据的队列
> ◆ 队列:数据结构的一种,特征为 “先进先出”.


什么是消息:

◆ 微服务架构:
> 服务器A向服务器B发送要执行的操作(视为消息)
> 服务器A向服务器C发送要执行的操作(视为消息)

1.2 MQ的作用:

在项目中,可将一些无需即时返回且耗时的操作提取出来,进行异步处理,而这种异步处理的方式大大的节省了服务器的请求响应时间,从而提高系统吞吐量

MQ应用场景

  1. 任务异步处理

  2. 应用程序解耦

  3. 削峰填谷

 1.3 MQ的优势

1.3.1 任务异步处理

一个下单操作耗时:20 + 300 + 300 + 300 = 920ms

用户点击完下单按钮后,需要等待920ms才能得到下单响应,太慢!处理速度慢, 积压在系统的请求就更多 , 占用的系统资源就越多 , 系统的吞吐量就越低

可以使用MQ提升系统的处理速度 , 提供用户体验, 提升系统的吞吐量

用户点击完下单按钮后,只需等待25ms就能得到下单响应 (20 + 5 = 25ms)。

提升用户体验和系统吞吐量(单位时间内处理请求的数目)

1.3.2 应用程序解耦

假如我们完成下单的过程中 , 库存系统服务发生了问题, 调用失败, 那么用户下单操作也就失败了

系统的耦合性越高,容错性就越低,可维护性就越低。

可以使用MQ降低系统模块之间的耦合

使用 MQ 使得应用间解耦 , 当其他子系统发生问题之后, 并不会影响核心功能的执行 , 提升容错性和可维护性。

1.3.3 削峰填谷

假设平常时段我们的系统每秒最多可以处理1000个用户请求 , 但是某一时刻请求瞬间增多, 每秒有5000甚至10000个请求访问系统, 这个时候服务器承载不了就会导致服务器崩溃

使用MQ可以帮助我们规避这种风险

 

使用了 MQ 之后,限制消费消息的速度为1000,这样一来,高峰期产生的数据势必会被积压在 MQ 中,高峰就被“削”掉了,但是因为消息积压,在高峰期过后的一段时间内,消费消息的速度还是会维持在1000,直到消费完积压的消息,这就叫做“填谷”。

使用MQ后,可以提高系统稳定性

 

小结:

  • 应用解耦:提高系统容错性和可维护性

  • 异步提速:提升用户体验和系统吞吐量

  • 削峰填谷:提高系统稳定性

1.4 MQ的劣势

1.4.1 系统可用性降低

系统引入的外部依赖越多,系统稳定性越差。一旦 MQ 宕机,就会对业务造成影响。如何保证MQ的高可用?

1.4.2 系统复杂度提高

MQ 的加入大大增加了系统的复杂度,以前系统间是同步的远程调用,现在是通过 MQ进行异步调用。

如何保证消息没有被重复消费?怎么处理消息丢失情况?那么保证消息传递的顺序性?

1.4.3 一致性问题

A 系统处理完业务,通过 MQ 给B、C、D三个系统发消息数据,如果 B 系统、C 系统处理成功,D 系统处理失败。如何保证消息数据处理的一致性?

小结:

 

1.5 常用的MQ产品介绍:

 

目前业界有很多的 MQ产品,例如 RabbitMQ、RocketMQ、ActiveMQ、Kafka、ZeroMQ、MetaMq等,也有直接使用 Redis充当消息队列的案例,而这些消息队列产品,各有侧重,在实际选型时,需要结合自身需求及 MQ 产品特征,综合考虑。下面是常见MQ产品的对比

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值