消息队列的作用

消息队列在电商系统中起到关键作用,包括解耦各服务模块,实现异步处理提高系统响应速度,以及通过削峰处理高并发请求。解耦使得系统间耦合度降低,提高了吞吐量和并发度;异步处理确保订单支付后的后续操作不影响用户体验;削峰则在秒杀等场景下保护系统免受瞬时大流量冲击。通过消息队列,电商系统能够更稳定、高效地运行。
摘要由CSDN通过智能技术生成

消息队列的作用总结来说有三点:解耦、异步、削峰。我们以当前较流行的电商系统来举例说明消息队列的这三个作用的用处。

解耦

上游系统对下游系统的调用如果为同步调用,则会大大降低系统的吞吐量与并发度,且系统耦合度太高。解耦的作用就在于降低系统与系统,或者系统中模块与模块之间的耦合度,,提高系统的吞吐量与并发度。

正常的电商系统下单流程对于用户来说其实就只有提交订单、关系物流即可,但是对于其后台服务来说,这些流程会交给“订单服务”去完成,这一套动作可能与涉及库存的操作、营销相关功能的操作、用户积分之类的操作,以及推荐或其他之类的操作。在使用消息队列之前,这些相关的流程和操作几乎是同步的,只有当一个步骤完成之后才能去继续下一个步骤,这样的话各个服务或模块之间的耦合度是非常高的,如果有任何一个模块的服务出现问题,那么这套下单的流程就不会完成。而当使用消息队列之后,就完全可以解决这个问题。订单服务收到用户提交订单的需求之后,会将该任务交由消息队列去处理,即商品库存的操作、用户积分的操作、营销功能的操作以及推荐之类的操作都会由消息队列去进行相关模块服务的调用,对于用户来说,只要下单成功,那么就意味着这套流程已经完成了,后续的相关操作会在用户不知情的情况下去执行的。

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

异步

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

削峰

消息队列也可以用来削峰,例如秒杀系统,平时的访问流量可能很低,但是要做秒杀活动时,秒杀的瞬间会疯狂请求我们的服务器,Redis,MySQL各自的承受能力都不一样,直接将全部流量照单全收的话底层系统可能会扛不住。此时,引入消息队列之后,我们可以把大量请求扔到消息队列里面,然后去慢慢处理,这样的话就达到处理大量请求的目标了。

 

本文参考自:两万字、三十图、二十三问,搞定RocketMQ! - 掘金

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值