1

复习要点

  1. 为什么使用消息队列?
  2. 使用消息队列有什么缺点?
  3. 消息队列如何选型?
  4. 如何保证消息队列是高可用的?
  5. 如何保证消息不被重复消费?
  6. 如何保证消费的可靠性传输?
  7. 如何保证消息的顺序性?
问题一:为什么使用消息队列?
解耦、异步、削峰
1. 解耦

image.png

传统模式的缺点:

  • 系统间耦合性太强,如上图所示,系统A在代码中直接调用系统B和系统C的代码,如果将来D系统接入,系统A还需要修改代码,过于麻烦!

image.png

消息队列模式:

  • 将消息写入消息队列,需要消息的系统自己从消息队列中订阅,从而系统A不需要做任何修改。
 2.异步

image.png

传统模式的缺点:

  • 一些非必要的业务逻辑以同步的方式运行,太耗费时间。

image.png

消息队列模式:

  • 将消息写入消息队列,非必要的业务逻辑以异步的方式运行,加快响应速度
3.削峰

image.png

传统模式的缺点:

  • 并发量大的时候,所有的请求直接怼到数据库,造成数据库压力过大

消息队列形式

  • 系统A慢慢的按照数据库能处理的并发量,从消息队列中慢慢拉取消息(pull模式)。在生产中,这个短暂的高峰期积压是允许的。
网上比较好的形容:通过一个队列在一端承接瞬时的流量洪峰,在另一端平滑地将消息推送出去。在这里,消息队列就像“水库”一样,拦蓄上游的洪水,削减进入下游河道的洪峰流量,从而达到减免洪水灾害的目的。

阿阿阿黄
34 声望4 粉丝