面试官 : 为什么使用消息队列
PS : 一般这么问首先是你简历中写了你项目中使用过消息队列,其次是单纯的考察你消息队列的一些基础的问题
回答的时候首先是知道消息队列的作用 : 解耦 、异步 、 削峰
解耦 、异步 不需要解释 ;
削峰 就是说错过高峰期,等到错过之后再一步一步的消化掉请求;比如说双十一的时候,提交订单的人很多,1-2s内大量的请求出现,在提交订单之后会出现卡顿或者说加载中的情况,其实就是错开高峰期,一步一步的消化掉大量的请求。
案例 :
我们项目是在下发短信和邮件的时候使用的,为什么使用呢,是因为在发送业务类的短信或者邮件的时候是批量推送的,一开始的时候是用的线程,但是发现有问题:
1、程序的耦合度太高,其他模块调用的话 还是得重新处理;
2、下发的时候处理高并发的能力不强
基于这些原因,决定对系统进行拆分,把下发消息这部分进行模块化;使用消息队列,看到他可以解耦、异步 、削峰的优点;
面试官 : 使用消息队列的过程中有没有什么问题
PS : 这么问其实就是说你消息队列有没有什么隐患,或者说是你消息队列在使用过程中出现的问题以及解决方案;
其实就是看你对消息队列的理解以及消息队列的基础;
案例 :
1、在使用过程中,消息下发模块挂掉了,导致下发部分功能不能使用,大量的请求出现之后系统卡顿,差点崩溃;
这就是系统的可用性降低