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

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

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

削峰
消息队列也可以用来削峰,例如秒杀系统,平时的访问流量可能很低,但是要做秒杀活动时,秒杀的瞬间会疯狂请求我们的服务器,Redis,MySQL各自的承受能力都不一样,直接将全部流量照单全收的话底层系统可能会扛不住。此时,引入消息队列之后,我们可以把大量请求扔到消息队列里面,然后去慢慢处理,这样的话就达到处理大量请求的目标了。
本文参考自:两万字、三十图、二十三问,搞定RocketMQ! - 掘金
边栏推荐
- PHP file lock
- 415-二叉树(144. 二叉树的前序遍历、145. 二叉树的后序遍历、94. 二叉树的中序遍历)
- 一群骷髅在飞canvas动画js特效
- 时尚的弹出模态登录注册窗口
- Top issue tpami 2022! Behavior recognition based on different data modes: a recent review
- Record the range of data that MySQL update will lock
- 微信小程序學習之 實現列錶渲染和條件渲染.
- Get the QR code of wechat applet with parameters - and share the source code of modifying the QR code logo
- 记录一下MySql update会锁定哪些范围的数据
- 分布式 | 如何与 DBLE 进行“秘密通话”
猜你喜欢

植物生长h5动画js特效

Producer / consumer model

How large and medium-sized enterprises build their own monitoring system

canvas 绘制图片

Top issue tpami 2022! Behavior recognition based on different data modes: a recent review

一群骷髅在飞canvas动画js特效

2021-08-17

Arbre binaire partie 1

uniapp实现点击拨打电话功能

Cicflowmeter source code analysis and modification to meet requirements
随机推荐
canvas掉落的小球重力js特效动画
微信小程序學習之 實現列錶渲染和條件渲染.
H5网页如何在微信中自定义分享链接
解决微信小程序rich-text富文本标签内部图片宽高自适应的方法
SQL Sever关于like操作符(包括字段数据自动填充空格问题)
Engine localization adaptation & Reconstruction notes
canvas无限扫描js特效代码
学习使用phpstripslashe函数去除反斜杠
Why is JSX syntax so popular?
Troubleshooting steps for Oracle pool connection request timeout
415-二叉树(144. 二叉树的前序遍历、145. 二叉树的后序遍历、94. 二叉树的中序遍历)
413 binary tree Foundation
物联网?快来看 Arduino 上云啦
小程序 rich-text中图片点击放大与自适应大小问题
二叉树第一部分
How to improve the efficiency of network infrastructure troubleshooting and bid farewell to data blackouts?
How to standardize data center infrastructure management process
GeoGebra 实例 时钟
队列Queue
Top issue tpami 2022! Behavior recognition based on different data modes: a recent review