Skip to content

面试速答(先看这里)

**一句话结论:**在高并发场景下,系统可能会面临短时间内大量请求涌入,导致系统负载急剧上升,甚至超过系统的处理能力,造成服务瘫痪。

60秒标准回答:

我们都知道,MQ有三个好处,异步、解耦,削峰填谷

在高并发场景下,系统可能会面临短时间内大量请求涌入,导致系统负载急剧上升,甚至超过系统的处理能力,造成服务瘫痪。使用MQ来缓冲这些请求,可以将大量并发请求暂存到队列中,然后按照系统能够处理的速度逐渐消费这些请求。这样可以避免系统因为瞬间的高并发而崩溃,实现系统流量的平滑处理。这就是削峰填谷

但是,并不是说用了MQ了就一定实现了削峰填谷了。这要看MQ的消费方式

**答题顺序:**结论 → 原理/机制 → 关键流程 → 场景与取舍 → 易错点

回答主线:

  • **要点1:**我们都知道,MQ有三个好处,异步、解耦,削峰填谷。
  • **要点2:**但是,并不是说用了MQ了就一定实现了削峰填谷了。
  • **要点3:**MQ的消息有推和拉两种模式,如果是那种推的模式,会在上游发送消息之后,就立即推给消费者,那这种情况对于接收消息的人来说,还是承担了很大的请求量。
  • **要点4:**并且一旦消息量太大,也会导致消费失败,那么消息就会重投,这就会导致更多的请求量过来。
  • **要点5:**所以,如果想要起到很好地削峰填谷的作用,需要使用拉的模式来获取消息 ,这样自己就可以控制速度了。

**记忆锚点:**RocketMQ → 请求暂存到队列 → 在高并发 → 通过队列

易错提醒:

  • 这样可以避免系统因为瞬间的高并发而崩溃,实现系统流量的平滑处理。
  • 并且一旦消息量太大,也会导致消费失败,那么消息就会重投,这就会导致更多的请求量过来。

加分表达:

  • 在高并发场景下,系统可能会面临短时间内大量请求涌入,导致系统负载急剧上升,甚至超过系统的处理能力,造成服务瘫痪。
  • MQ的消息有推和拉两种模式,如果是那种推的模式,会在上游发送消息之后,就立即推给消费者,那这种情况对于接收消息的人来说,还是承担了很大的请求量。
  • 而如果消费者的消费能力不行,那么消息也会堆积到消费者端。

追问准备:

  • 围绕「RocketMQ」:底层原理是什么?使用时有哪些边界和常见坑?
  • 围绕「请求暂存到队列」:底层原理是什么?使用时有哪些边界和常见坑?
  • 围绕「在高并发」:底层原理是什么?使用时有哪些边界和常见坑?
  • 如果线上出现异常,你会如何定位、验证并规避?

典型回答 ​

我们都知道,MQ有三个好处,异步、解耦,削峰填谷。

在高并发场景下,系统可能会面临短时间内大量请求涌入,导致系统负载急剧上升,甚至超过系统的处理能力,造成服务瘫痪。使用MQ来缓冲这些请求,可以将大量并发请求暂存到队列中,然后按照系统能够处理的速度逐渐消费这些请求。这样可以避免系统因为瞬间的高并发而崩溃,实现系统流量的平滑处理。这就是削峰填谷。

但是,并不是说用了MQ了就一定实现了削峰填谷了。这要看MQ的消费方式。

MQ的消息有推和拉两种模式,如果是那种推的模式,会在上游发送消息之后,就立即推给消费者,那这种情况对于接收消息的人来说,还是承担了很大的请求量。而如果消费者的消费能力不行,那么消息也会堆积到消费者端。

并且一旦消息量太大,也会导致消费失败,那么消息就会重投,这就会导致更多的请求量过来。

所以,如果想要起到很好地削峰填谷的作用,需要使用拉的模式来获取消息,这样自己就可以控制速度了。消息就可以在MQ的队列中堆积,而不是在客户端堆积,通过队列的缓冲来起到削峰填谷的作用!

扩展知识 ​

推&拉 ​

📄 ✅RocketMQ的消息是推还是拉?

打开文档:✅RocketMQ的消息是推还是拉?