简单一篇文章,讲一下 消息队列(Message Queue)是干什么的?

news/2026/1/16 22:33:28/文章来源:https://www.cnblogs.com/duyuanshang/p/19494249

目录
  • 数据库 和 消息队列 的区别?
  • 那 消息队列 怎么工作呢?
  • 微服务架构是什么?
  • 同步通信的弊端?

一句话说完就是,消息队列 就是解决 微服务架构 的应用程序,各模块传递数据的杂七杂八的问题的!

本文完整版原文地址: https://www.ccgxk.com/emlog_dev/621.html

(PS: 现在有了 AI 作图,做一些内容技术插图真好用)

今天用一个单线的讲述,把前 100 年讲一下:

首先,先说一下数据库。

就像 Postgres MongoDB MySQL 这种数据库,是用于持久储存数据的。

这个【消息队列】也差不多,也是存数据的。

其实可以这样来理解。

  1. 数据库 是 一个仓库。
  2. 消息队列 是 一个顺丰快递公司。专业用于传递数据!

数据库 和 消息队列 的区别?

对于 第一个,数据库。它生来设计,就是容纳很多不同种类的物品的,比如数字、字母编号、秘钥、文章.... 而且一般是为了存放很久的。跟仓库一样。

对于 第二个,消息队列。内容会短暂进行存储,但不会留很久,而是发放到它要去的地方。但也要保留足够长的时间,以便能稳定发送到下一个地点。就跟一个顺丰快递一样。

【消息队列】的核心本质就是这样:生产者和顾客之间的一个传输媒介,一个中介。生产者生产 messages 消息,顾客 接收。

消息队列 示意图

那 消息队列 怎么工作呢?

生产者 和 顾客 之间,会通过 消息队列 协议,也就是 STOMP、AMQP、MQTT 这类这样工作。

一般我们很喜欢在 微服务架构 (microservices) 里各个系统间的通信里使用 这个 消息队列 协议。

微服务架构是什么?

先说一下最原始的 monolith application ,我们国内常翻译其为 单体架构。

单体架构 是指 整个代码库 都包含在一个应用程序里。小项目一般都这样,本身也没多少代码嘛.....

都放到一个程序里,那必然开发、测试、部署都容易。

但程序一直开发迭代,架构会出现很多问题。即便采用了模块、结构,将其拆分的很细..... 依然止不住代码变得混乱。尤其是 bug,出现一点 bug ,就可能牵一发动全身!

于是就引入了 微服务,将单一的多功能大应用,拆分成几个小应用。每个小应用,只干它自己的事!

微服务架构 示意图

其中最显著的优点,就是 bug 隔离,书面化语言就是 故障隔离机制 。不会一个小 bug 把整个系统弄宕机了。

第二个优点,就是你各管各的,跟电路板电子一样,使用不同的技术栈、做各种乱七八糟的优化。尤其也提现在 扩容 上,应用跑通了,发小财了,扩容就容易了,只需要根据需要扩充某部分就行。

我们的主题,消息队列,就天然适合 微服务 之间的数据通信!

同步通信的弊端?

说一下 微服务 之间原来最常用的通信方式:

同步通信:也就是最常用的 REST API 接口风格,用 xml json 调来调去。但你要注意,是同步的。如果中间出现 bug,程序会翻车。

而今天这个 消息队列 是异步的,A 给 B 送了一个「顺丰快递包裹」,无需等待回应,直接会从 顺丰 那里得到一个简单的回执,然后就该干啥就干啥,默认 B 已经收到了,不管了。

消息队列的工作原理 简单示意图

消息队列 的另一个好处是,即便任务激增,消息队列 内部也会有缓存机制,是一个专业的消息传递服务,能防止你的服务器过载,会慢慢根据性能,将消息一一传递出去。

总之,消息队列 就是一个专业的干传递信息、内容的 程序。

毕竟,之前那种什么 json 那种,太简陋了。一出 bug 就宕了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1170214.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

电脑运行库合集-(微软/vc/游戏)运行库安装包文件

在使用电脑系统时经常会出现丢失找不到某些文件的情况,由于很多常用软件都是采用 Microsoft Visual Studio 编写的,所以这类软件的运行需要依赖微软Visual C运行库,比如像 QQ、迅雷、Adobe 软件等等,如果没有安装VC运行库或者安装…

基于深度学习的皮肤病检测系统(YOLOv8+YOLO数据集+UI界面+Python项目+模型)

一、项目介绍 摘要 本项目基于YOLOv8目标检测算法开发了一个皮肤病自动识别系统,专门用于检测和分类7种常见的皮肤病变。系统训练数据集包含681张训练图像、97张验证图像和195张测试图像,涵盖了Bowens Disease(鲍温病)、Basal Cell Carcinoma(基底细胞…

微软常用运行库合集32|64位文件下载

在使用电脑系统时经常会出现丢失找不到某些文件的情况,由于很多常用软件都是采用 Microsoft Visual Studio 编写的,所以这类软件的运行需要依赖微软Visual C运行库,比如像 QQ、迅雷、Adobe 软件等等,如果没有安装VC运行库或者安装…

S4 新语法记录(如+with、select内表、range、过滤器filter、分组loop…group)

1.EXSTS 注意:where后面 添加需要判断的字段 2. with 注意:with 后面的 内表名 可以有多个 ,但是后面只能紧接一个sql;需要用到多次可以使用union关键字 连接 3.case… 需要as 别名 4.select内表 **注意:**内…

Postman接口测试极速入门指南

一、2026年Postman核心功能升级功能模块新特性测试效率增益智能填充AI自动补全URL/Headers40%断言生成根据历史响应自动推荐断言逻辑65%多环境治理可视化环境变量血缘分析50%二、三阶速成体系(含企业级最佳实践)阶段1:智能请求构建&#xff0…

基于深度学习的安检X光危险物检测系统(YOLOv8+YOLO数据集+UI界面+Python项目+模型)

一、项目介绍 摘要 本项目基于先进的YOLOv8目标检测算法,开发了一套专门用于安检X光图像的危险物品自动检测系统。系统能够识别18类常见危险物品,包括各类刀具(Axe、Knife、Throwing Knife等)、工具类物品(Hammer、C…

全网最全本科生AI论文平台TOP9:毕业论文写作必备测评

全网最全本科生AI论文平台TOP9:毕业论文写作必备测评 2026年本科生AI论文平台测评:为何需要这份权威榜单? 随着人工智能技术在学术领域的不断渗透,越来越多的本科生开始借助AI工具提升论文写作效率。然而,面对市场上琳…

Anaconda3下载安装+使用教程全攻略:Python开发环境下载安装教程

新手学 Python 数据分析,是不是总被 “安装库失败”“版本冲突” 搞崩溃?Anaconda3 直接解决这些痛点 —— 作为**Python 数据科学集成工具包**,它打包了 Python 3.11 内核、180 + 常用科研库(NumPy/Pandas/Matplo…

基于深度学习的水稻病害检测系统(YOLOv8+YOLO数据集+UI界面+Python项目+模型)

一、项目介绍 摘要 本项目基于先进的YOLOv8目标检测算法,开发了一套专门针对水稻病害的智能识别系统。系统可准确检测并分类三种常见水稻病害:细菌性条斑病(Bacteria_Leaf_Blight)、褐斑病(Brown_Spot)和叶黑粉病(Leaf_smut)。项目采用大规模专业数据集…

Python 中安装和导入 DBSCAN 库步骤

你想知道在Python中具体如何安装和导入DBSCAN相关库,核心答案是:DBSCAN并非独立库,而是集成在`scikit-learn`(简称sklearn)这个Python机器学习核心库中,所以只需安装sklearn,就能调用DBSCAN模块。下面我会一步步…

学霸同款2026自考AI论文平台TOP10:选对工具轻松过关

学霸同款2026自考AI论文平台TOP10:选对工具轻松过关 2026年自考AI论文平台测评:选对工具,轻松通关 随着人工智能技术的不断进步,越来越多的自考生开始借助AI论文平台提升写作效率、优化内容质量。然而,面对市场上琳琅满…

强烈安利专科生必用TOP8 AI论文软件测评

强烈安利专科生必用TOP8 AI论文软件测评 一、不同维度核心推荐:8款AI工具各有所长 对于专科生来说,撰写论文是一项既重要又复杂的任务,从选题到初稿、再到查重和排版,每一个环节都可能成为挑战。而市面上的AI论文工具种类繁多&…

JAVA攻防-Shiro专题有key无利用链JRMP协议CC1链分析Transform执行链

知识点: 1、Java攻防-Shiro-有key无利用链&JRMP协议 2、Java攻防-Shiro-CC1链分析&Transform执行链 一、演示案例-Java攻防-Shiro-有key无利用链&JRMP协议 Shrio有key无链: JRMP指的是Java远程方法协议(Java Remote Method Pro…

边缘智算新引擎 DPU 驱动的算力革新

2026年1月7日,工信部印发《工业互联网和人工智能融合赋能行动方案》,强化工业智能算力供给。加快工业互联网与通算中心、智算中心、超算中心融合应用,鼓励公共算力服务商向工业企业提供服务。引导工业企业加快边缘一体机、智能网关等设备部署…

从需求分析到精准匹配:解码专业红娘的“择偶系统设计”逻辑

作为一名长期与逻辑和系统打交道的技术人,你是否发现:调试代码比处理情感问题简单得多?今天我们从系统设计的角度,聊聊专业红娘如何帮你解决这个“非线性优化问题”。一、问题定义:为什么择偶需求比产品需求更难厘清&a…

2026最新MinGW64官网下载安装全攻略教程(含环境变量配置避坑,适合新手小白) - xiema

MinGW(Minimalist GNU for Windows)是Windows平台上非常受欢迎的 C/C++ 编译工具。 简单来说,MinGW 就是把 Linux 下大名鼎鼎的 GCC 编译器"移植"到了 Windows 系统,让你不用装虚拟机就能在 Win 上直接编…

开源大模型中的Agent概念解析

你好!这个问题问得非常好,因为“Agent”确实是当前AI领域,尤其是大模型应用中最热门、最关键的概念之一。 简单来说,在大模型语境下的“Agent”(智能体),指的是一种能够理解用户指令、自主规划并…

C++小白训练第六天

C++小白训练第六天 以下为牛客挑战 今日收获了解了map<int,int>m;,map可以去重共,因为键值对key是唯一的,for (auto it = m.begin(); it != m.end(); ++it) {int key = it->first; // 键int& val …

Educational Codeforces Round 186 C-F 个人题解

Educational Codeforces Round 186 C - Production of Snowmen给定三个分别有 $n$ 个元素的环 $a,b,c$,现在要选择一个三元组 $(i,j,k),1\le i,j,k\le n$,使得 $(a_i,b_j,c_k),(a_{i+1},b_{j+1},c_{k+1}),\cdots,(a_…