gball个人知识库
首页
基础组件
基础知识
算法&设计模式
  • 操作手册
  • 数据库
  • 极客时间
  • 每日随笔
  • 学习
  • 面试
  • 心情杂货
  • 实用技巧
  • 友情链接
  • 画图工具 (opens new window)
关于
  • 网盘 (opens new window)
  • 分类
  • 标签
  • 归档
项目
GitHub (opens new window)

ggball

后端界的小学生
首页
基础组件
基础知识
算法&设计模式
  • 操作手册
  • 数据库
  • 极客时间
  • 每日随笔
  • 学习
  • 面试
  • 心情杂货
  • 实用技巧
  • 友情链接
  • 画图工具 (opens new window)
关于
  • 网盘 (opens new window)
  • 分类
  • 标签
  • 归档
项目
GitHub (opens new window)
  • 面试

  • 数据库

  • linux

  • node

  • tensorFlow

  • 基础组件

    • mybatis

    • spring

    • 消息队列

      • MQ本质
        • 本质
          • 一发一存一消费
        • 模型进化
          • 队列模型
          • 发布-订阅模型
        • 透过模型看 MQ 的应用场景
          • 1. 系统解耦
          • 2. 异步通信
          • 3. 流量削峰
      • RabbitMQ
    • springboot

    • tomcat如何工作

    • elasticsearch

  • 基础知识

  • 算法与设计模式

  • 分布式

  • 疑难杂症

  • go学习之旅

  • 极客时间

  • 知识库
  • 基础组件
  • 消息队列
ggball
2021-10-08

MQ本质

# MQ

# 本质

# 一发一存一消费

生产者先将消息投递一个叫做「队列」的容器中,然后再从这个容器中取出消息,最后再转发给消费者,仅此而已

# 模型进化

# 队列模型

这便是队列模型:它允许多个生产者往同一个队列发送消息。但是,如果有多个消费者,实际上是竞争的关系,也就是一条消息只能被其中一个消费者接收到,读完即被删除。

# 发布-订阅模型

需求:如果需要将一份消息数据分发给多个消费者,并且每个消费者都要求收到全量的消息 所以产生了发布-订阅模型,发布-订阅模型中,存放消息的容器变成了 主题,订阅者在接收消息之前需要先 订阅主题。最终,每个订阅者都可以收到同一个主题的全量消息。

仔细对比下它和 “队列模式” 的异同:生产者就是发布者,队列就是主题,消费者就是订阅者,无本质区别。唯一的不同点在于:一份消息数据是否可以被多次消费。

# 透过模型看 MQ 的应用场景

图片

# 1. 系统解耦

生产者 和 消费者 解耦,生产者只和队列耦合,消费者只和队列耦合

# 2. 异步通信

系统只需要关注更新订单状态,其他随带的状态更新,可以作为异步推送,能减少订单支付的整体耗时,提升订单系统的吞吐量

# 3. 流量削峰

除此以外,由于队列能转储消息,对于超出系统承载能力的场景,可以用 MQ 作为 “漏斗” 进行限流保护,即所谓的流量削峰。

上次更新: 2025/06/04, 15:06:15
spring的三级缓存如何解决循环依赖
RabbitMQ

← spring的三级缓存如何解决循环依赖 RabbitMQ→

最近更新
01
AIIDE
03-07
02
githubActionCICD实战
03-07
03
windows安装Deep-Live-Cam教程
08-11
更多文章>
Theme by Vdoing
总访问量 次 | 总访客数 人
| Copyright © 2021-2025 ggball | 赣ICP备2021008769号-1
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式
×

评论

  • 评论 ssss
  • 回复
  • 评论 ssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss
  • 回复
  • 评论 ssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss
  • 回复
×