当前位置:网站首页>消息队列的作用
消息队列的作用
2022-06-24 09:43:00 【文丑颜不良啊】
消息队列的作用总结来说有三点:解耦、异步、削峰。我们以当前较流行的电商系统来举例说明消息队列的这三个作用的用处。
解耦
上游系统对下游系统的调用如果为同步调用,则会大大降低系统的吞吐量与并发度,且系统耦合度太高。解耦的作用就在于降低系统与系统,或者系统中模块与模块之间的耦合度,,提高系统的吞吐量与并发度。
正常的电商系统下单流程对于用户来说其实就只有提交订单、关系物流即可,但是对于其后台服务来说,这些流程会交给“订单服务”去完成,这一套动作可能与涉及库存的操作、营销相关功能的操作、用户积分之类的操作,以及推荐或其他之类的操作。在使用消息队列之前,这些相关的流程和操作几乎是同步的,只有当一个步骤完成之后才能去继续下一个步骤,这样的话各个服务或模块之间的耦合度是非常高的,如果有任何一个模块的服务出现问题,那么这套下单的流程就不会完成。而当使用消息队列之后,就完全可以解决这个问题。订单服务收到用户提交订单的需求之后,会将该任务交由消息队列去处理,即商品库存的操作、用户积分的操作、营销功能的操作以及推荐之类的操作都会由消息队列去进行相关模块服务的调用,对于用户来说,只要下单成功,那么就意味着这套流程已经完成了,后续的相关操作会在用户不知情的情况下去执行的。

在接入消息队列之前,订单服务与各个模块交互如上图所示。接入消息队列之后,订单服务会将任务交给消息队列,由消息队列去负责与各个模块的交互。如下图所示:

异步
订单支付之后,后台服务要扣减库存、增加积分、发送消息等等,且处理流程都是链式的,链路一长,响应时间就变长了。引入消息队列,基本上各个节点都可以以异步的方式去处理,这样一来就能降低响应时间。

削峰
消息队列也可以用来削峰,例如秒杀系统,平时的访问流量可能很低,但是要做秒杀活动时,秒杀的瞬间会疯狂请求我们的服务器,Redis,MySQL各自的承受能力都不一样,直接将全部流量照单全收的话底层系统可能会扛不住。此时,引入消息队列之后,我们可以把大量请求扔到消息队列里面,然后去慢慢处理,这样的话就达到处理大量请求的目标了。
本文参考自:两万字、三十图、二十三问,搞定RocketMQ! - 掘金
边栏推荐
- 操作符详解
- 微信小程序學習之 實現列錶渲染和條件渲染.
- 413 binary tree Foundation
- uniapp开发微信小程序,显示地图功能,且点击后打开高德或腾讯地图。
- Is there a reliable and low commission futures account opening channel in China? Is it safe to open an account online?
- 使用swiper左右轮播切换时,Swiper Animate的动画失效,怎么解决?
- 数组无缝滚动demo
- Three ways to use applicationcontextinitializer
- numpy.logical_and()
- 415-二叉树(144. 二叉树的前序遍历、145. 二叉树的后序遍历、94. 二叉树的中序遍历)
猜你喜欢

Wechat applet learning to achieve list rendering and conditional rendering

TP5 using post to receive array data times variable type error: solution to array error

保健品一物一码防窜货营销软件开发

上升的气泡canvas破碎动画js特效

uniapp开发微信小程序,显示地图功能,且点击后打开高德或腾讯地图。

编程题(持续更新)

411-栈和队列(20. 有效的括号、1047. 删除字符串中的所有相邻重复项、150. 逆波兰表达式求值、239. 滑动窗口最大值、347. 前 K 个高频元素)

oracle池式连接请求超时问题排查步骤

自定义kindeditor编辑器的工具栏,items即去除不必要的工具栏或者保留部分工具栏

有关二叉树 的基本操作
随机推荐
Canvas draw picture
MySQL data advanced
Nvisual digital infrastructure operation management software platform
el-table点击添加行样式
Using pandas to read SQL server data table
Use of vim
TP5 using post to receive array data times variable type error: solution to array error
PHP uses recursive and non recursive methods to create multi-level folders
Honeypot 2 hfish, ehoney
415-二叉树(144. 二叉树的前序遍历、145. 二叉树的后序遍历、94. 二叉树的中序遍历)
微信小程序rich-text图片宽高自适应的方法介绍(rich-text富文本)
涂鸦智能携多款重磅智能照明解决方案,亮相2022美国国际照明展
415 binary tree (144. preorder traversal of binary tree, 145. postorder traversal of binary tree, 94. inorder traversal of binary tree)
物联网?快来看 Arduino 上云啦
linux下oracle服务器打开允许远程连接
How do novices choose the grade of investment and financial products?
CVPR 2022 Oral | 英伟达提出自适应token的高效视觉Transformer网络A-ViT,不重要的token可以提前停止计算
Yolov6: the fast and accurate target detection framework is open source
引擎国产化适配&重构笔记
学习使用KindEditor富文本编辑器,点击上传图片遮罩太大或白屏解决方案