消息队列使用场景

一、异步处理

在一些场景中,为了让用户得到更快的体验,往往会使用一些异步调用的手段使得响应时间更快。

举一个大家都很熟悉的例子:用户注册时,将用户信息写入数据库后,还要给用户发送注册邮件与注册短信。

流程图:

按照上图的设计模式,用户的到响应的时间为t1+t2+t3。

思考一下,其实发送邮件和短信与下一步程序处理没有逻辑关系。所以用户完全不需要等待他们执行完才得到响应。这时可以考虑将t2与t3这段逻辑异步处理,这样用户就只需要等待t1时间就能快速得到响应。

异步处理可以用异步线程,也可以用消息队列。但是这里不推荐使用异步线程,为啥呢?因为异步线程虽然能实现异步处理,但是我们不能确定该条程序有最终没有被执行,而消息队列可以保证消息的持久化,只要放入队列中了,就可以保证大部分消息一定被消费。

二、应用解耦


在商城系统中,用户下单时,需要生成订单与扣减库存。但是如果库存系统宕机了,订单系统就不能正常工作,造成连锁反应,就会降低系统的可用性。

在此,我们可以通过降低两个系统之间的耦合度,让整个系统达到最高的可用性。

三、削峰限流

诸如秒杀与抢红包之类的场景,瞬时请求量非常大,如果这些请求都打到应用服务器上是非常可怕的,这会造成系统宕机,导致系统不可用。


此时业务逻辑为:将用户的请求写入消息队列,当请求队列达到指定长度时,就直接抛弃用户请求,给用户返回错误页面,而队列中剩余的消息由应用服务进行消费。

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值