在任何一个基于消息的应用中,都有
消息发布者

消息接收者
所谓的消息发布者和消息接受者,通俗的举例说明的话就是。

消息队列,解决的是耦合问题

场景:

我有个小商城系统,一开始的功能就是;消费者过来查询商品,加入购物车,完成支付,结束。看多么简单易懂的一个购买流程。
但是后面来了个产品经理,搞了个优惠券系统,OK问题不大,流程里面多100ms去扣减优惠券。后来产品经理灵光一闪说我们可以搞个积分系统啊,也行吧,流程里面多了200ms去增减积分。再后来后来隔壁的产品老王说:下单成功后我们要给用户发短信,也将就吧,100ms去发个短信我之前在的电商老东家要求所有接口的Rt(ResponseTime响应时间)在200ms内。

微信公众号接收了用户发来的消息,先放到队列,然后再循环出列存库

如何解决该问题:
异步:
你对比一下是不是发现,这样子最多只用100毫秒用户知道下单成功了,至于短信你迟几秒发给他他根本不在意是吧

解耦:
既然面试官这么问了,我就说一下为啥我们不能用线程去做,因为用线程去做,你是不是要写代码?我主要的系统只要负责进行消息的发送,然后短信和什么优惠券之后的就让其他系统处理。那后面要接入什么系统简单,直接订阅你发送的支付成功消息,你支付成功了我监听就好了。

削峰:
咱们的系统可能平时实际上使用的人数并不是特比的多,但是好巧不巧的是,有一天淘宝挂了,然后大量的客户一看 呀,这有个福报app.咱们都去那里购物吧。然后流量就炸了。所以 我们可以根据服务器的性能,一点点的慢慢去处理这个过程。

作者:敖丙
链接:https://www.zhihu.com/question/54152397/answer/923992679
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

参考:https://www.zhihu.com/question/54152397

标签: none

相关阅读

  • 测试信息
  • 开发商:阿里巴巴
  • 版本号:1.0
  • 配色:(企业家)” 推选活动结果
  • 测试信息
  • 测试信息
  • 测试信息