春招面试复习:消息队列(一)- 消息队列的意义

MQ 主要就是用来发送和接收处理消息,但它的作用可不仅解决应用间通信问题。

1 MQ 的现实由来

在工厂我们随处可见各种传送带,很多道工序都替代了人工一次次极大耗费劳动力的往返运动,而把一套业务分成若干部分,各流程之间传输所需材料即可。用编程思想,我们可以认为是传送带的发明解决了上下游工序间的“通信”问题。

传送带的使用着实提高社会必要劳动生产时间,让人类工业社会效率显著提升。但就真的百利无一害了吗?
我们会发现每道工序生产速度并不相同。有时上游的材料刚传送过来,工人可能正在处理上批材料,没有时间接收。不同工序的工人必须协调好什么时间往传送带上放置材料,若出现上下游工序速度不一致,上下游工人之间就得互相等待,确保不会出现传送带上的半成品材料挤压太多,无人接收!

为解决该问题,在每组工序下游配备个暂存仓库,这样上游工人就不用等下游工人有空,任何时间都可把加工完成的半成品丢到传送带,无法接收的就被暂存在仓库,下游工人可随时来取。
配备的仓库就起到了“通信”过程中“缓存”作用。

这就是现实版的消息队列。

2 消息队列适用场景

理解了消息队列由来,看看开发中,何时需要 MQ 呢?

2.1 异步处理

跨系统的异步通信(最早使用的有IBM MQ)或者应用内的同步变成异步(秒杀)。

比如面试常客秒杀系统,一个秒杀请求可能包含很多步骤:

  • 风控
  • 锁库存
  • 生成订单
  • 通知
  • 更新统计数据

最低级的同步处理流程:App将请求发送给网关,依次调用上述流程,然后将结果返回给APP。

决定秒杀成功与否的实际上只有风控和锁库存。只要用户请求通过风控,并在Server完成库存锁定,就可给用户返回秒杀结果,对于后续生成订单、短信通知和更新统计数据等,并不一定要在秒杀请求中处理完。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值