RabbitMQ使用场景介绍

6.MQ的使用场景

6.1异步处理

场景说明:用户注册后,需要发送邮件和注册短信,传统的方式有两种:1、串行的方式,2、并行的方式

  • 串行方式:将注册信息写入数据库后,发送注册邮件,再发送注册短信,以上三个任务完成后才返回给客户端,只有一个问题是:邮件、短信并不是必须的,它只是一个通知,而这种做法让客户端等待不需要等待的东西。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NtFjS9oQ-1600345553715)(RabbitMQ.assets/image-20200831101913281.png)]

  • 并行方式:将注册信息写入数据库后,发送邮件的同时发送短信,以上三个任务完成后,返回给客户端,并行的方式能提高处理的时间

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZSSpUISr-1600345553719)(RabbitMQ.assets/image-20200831111249842.png)]

  • 消息队列:假设三个任务节点分别使用时间50ms,并行使用100ms,虽然并行已经提高了处理的时间,前面说过,邮件和断行对我们正常使用网站并没有任何的影响,客户端没有必要等待发送完成才显示注册成功,应该是写入数据库后就返回,消息队列:引入消息队列后,把发送邮件和短信不是必须的业务逻辑异步处理

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传)]

6.2应用解耦

场景:双十一是购物狂节,用户下单后,订单系统要通知库存系统,传统的做法就是订单系统调用库存系统的接口

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CJo9LLOO-1600345553727)(RabbitMQ.assets/image-20200831190402350.png)]

这种做法有一个缺点:

当库存系统出现故障之后,订单系统就会失败,订单系统和库存系统耦合,引入消息队列

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WrOwiyfL-1600345553728)(RabbitMQ.assets/image-20200831191436353.png)]

  • 订单系统:用户下单后,订单系统完成持久化处理,将消息写入消息队列,返回用户下单成功
  • 库存系统:订阅下单的消息,获取下单消息,进行入库操作。就算库存系统出现故障,消息队列也能保证消息的可靠投递,不会导致消息丢失。

6.3流量削峰

场景:秒杀活动,一般因为流量过大,导致应用挂掉,为了解决这个问题,一般再应用前端加入消息队列

作用

  • 可以控制活动的人数,超过一定阈值的订单直接丢弃
  • 可以缓解短时间的高流量压垮应用

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0j82leWA-1600345553730)(RabbitMQ.assets/image-20200831192713587.png)]

  1. 用户的请求,服务器收到之后,首先写入消息队列,加入消息队列长度超过最大值,则直接抛弃用户请求或者跳转到错误页面,
  2. 秒杀业务根据队列中的请求信息,再做后续处理
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值