6. 为什么使用消息队列进行流量消峰?

传统模式下,如下图所示:

传统模式

传统模式

  • 对于大多数系统,一定会有访问量的波峰和波谷。比较明显的,就是我们经常使用的美团外卖,又或者被人诟病的小米秒杀。
  • 如果在并发量大的时间,所有的请求直接打到数据库,造成数据库直接挂掉。

引入消息队列后,如下图所示:

新模式

新模式

  • 通过将请求先转发到消息队列中。然后,系统 A 慢慢的按照数据库能处理的并发量,从消息队列中逐步拉取消息进行消费。在生产中,这个短暂的高峰期积压是允许的,? 相比把数据库打挂来说。
  • 当然,可能有胖友说,访问量这么大,不会把消息队列给打挂么?相比来说,消息队列的性能会比数据库性能更好,并且,横向的扩展能力更强。