07 场景演示:MQ有什么用处?
2021/6/14 18:22:28
本文主要是介绍07 场景演示:MQ有什么用处?,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
消息队列的作用:解耦、异步、削峰
1.高度耦合场景
在上图的场景中,每次新增系统接入都需要改代码,而每次移除服务都要删除代码,耦合度太高了。
另外,A系统还要考虑其他下游系统会不会宕机后接收不到消息的问题。为此要考虑做一个重试机制?
2.MQ解耦
上图的场景中,维护这个代码:不需要考虑其他系统是否调用成功、失败超时。
3.同步高延时场景
这样一个请求全部完成,需要耗费的总时长是:820ms。
用户通过浏览器发起这个请求,等待将近1秒钟,几乎不可能接受。一般的互联网企业,对用户的直接的操作,一般要求是每个请求都必须在200ms内完成,对用户几乎是无感知的。
4.异步低延时场景
用户请求系统A到系统A发送3个消息到MQ队列,然后系统A返回。总耗时为3+5=8ms。
从感知上,只是点了一个按钮,然后就直接返回了,体验很好。
5.请求高峰负荷崩溃场景
在每天的12:00~13:00,每秒并发请求可能高达5k+,服务基于MySQL的,大量请求的进入以为对MySQL执行也达到了5k+。
一般的MYSQL支持2k的请求,当前超过2k达到5k+的请求会将MYSQL打死,导致系统崩溃,用户也就无法访问系统A了。
当高峰期过后,在线用户降低到1w左右,每秒请求回落到50~100左右,此时对MYSQL执行的请求在100以内远低于最高负载的2k,对整个系统毫无压力。
6.流量削峰场景
如果使用MQ,每秒5k+请求写入MQ,A系统每秒最多只处理2k的请求,因为MYSQL每秒最多处理2k个请求。
A系统从MQ中慢慢拉取请求,当进入12:00~13:00请求高峰期。A系统依旧按照2k的数量去拉取请求,此时大量请求会堆积在MQ的队列中无法处理。假设高峰期为1小时,将有数十上百万的请求堆积在MQ中。
对MQ而言,是可以负载这么多基于的消息的。当高峰期过后,请求回落到100左右,此时A服务依旧按照2k每秒去拉取,相较于MQ的入列数据数量而言,A服务很快就能将积压的请求处理完
这篇关于07 场景演示:MQ有什么用处?的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-05-29AutoMQ 产品动态 | 企业版正式上线阿里云、AWS 中国区云市场
- 2024-05-29盘点 AutoMQ 深度使用的阿里云云原生技术
- 2024-05-29盘点 AutoMQ 深度使用的阿里云云原生技术
- 2024-05-29AutoMQ 社区双周精选第十期
- 2024-05-08「布道师系列文章」解析 AutoMQ 对象存储中的文件存储格式
- 2024-05-08「布道师系列文章」小红书黄章衡:AutoMQ Serverless 基石-秒级分区迁移
- 2024-05-08AutoMQ 系统测试体系揭秘
- 2024-03-14AutoMQ 携手阿里云共同发布新一代云原生 Kafka,帮助得物有效压缩 85% Kafka 云支出!
- 2024-02-22kafka partitioner
- 2024-01-24AutoMQ生态集成 - 将数据从 AutoMQ Kafka 导入 RisingWave 数据库