首先是消息队列常见的使用场景,其实场景有很多,但是比较核心的使用场景有三个:解耦、异步、削峰
解耦
在不使用MQ时的系统模块耦合场景:
使用MQ后系统解耦:
如果说在自己负责的系统中是否有类似的场景,就是一个系统或者是一个模块,调用了多个系统或者模块,互相之间的调用关系很复杂,尤其是维护起来会很麻烦。但其实这个调用是不需要直接同步调用接口的,就需要考虑在自己的项目中是否可以使用MQ进行异步解耦。
异步
在不使用MQ的同步高延时请求:
使用MQ进行异步化之后的接口性能优化:
关于异步的性能优化的时间的计算,自己觉得应该将MQ队列交给系统ABC处理的时间也应算上,取最大值即为处理请求所需要的总时长。
削峰
在没有使用MQ时高并发情况下系统被宕的场景:
说明:Mysql一般承受的每秒钟并发量在2000,如果每秒钟有5000并发,Mysql可能直接崩溃
使用MQ进行削峰的场景:
在每一个系统中都会有高峰期和低谷期,如果说使用MQ进行削峰,在低谷期处理高峰期所积压的消息,感觉一定会影响用户使用体验,和第二条异步中互联网企业要求一个请求的处理都必须在200ms之内完成有矛盾。