当前位置: 首页 > news >正文

初识 MQ:从同步到异步,聊聊消息队列那些事

初识 MQ(消息队列):从同步到异步,聊聊消息队列那些事

一、同步调用:简单但耦合

1.1 什么是同步调用?

同步调用意味着 调用方需要等待被调用方返回结果,才能继续往下执行。
例如:

用户下单 → 调用库存服务扣库存 → 调用支付服务支付 → 返回下单结果

整个流程是串行的,只要其中一个环节卡住(如库存服务响应慢),整个调用链都会被阻塞。

1.2 同步调用的弊端

✅ 简单易实现,易于调试。
✅ 时效性强,等待到结果后才返回
耦合度高,服务之间强依赖。
容错能力差,某个服务挂了可能会影响整条链路。
性能瓶颈明显,不适合高并发场景。
拓展性差
性能下降
级联失败

二、异步调用:解耦、提速、削峰

2.1 什么是异步调用?

异步调用通过消息队列来实现,调用方 发送消息到队列 后就可以立刻返回,由消费者服务 异步处理消息

在这里插入图片描述
三个角色:

  • 消息发送者:投递消息的人,就是原来的调用方
  • 消息Broker:管理、暂存、转发消息
  • 消息接收者:接收和处理消息的人,就是原来的服务提供方
    在这里插入图片描述

2.2 异步调用的优势

解耦合,拓展性好:服务之间不再直接调用,互不影响。
高性能:,无需等待响应速度快,吞吐量大。
容错性强:消费者服务可独立处理失败重试。
支持广播、延迟、定时等高级功能
故障隔离
✅ 缓存消息,流量削峰填谷

2.3 异步调用的挑战

❌ 实现复杂度高。
❌ 消息可靠性(丢失、重复)需特别处理。
❌ 引入额外组件(如 MQ 中间件)增加运维成本。

三、技术选型:主流 MQ 对比

名称开发语言公司协议支持特点描述适用场景
RabbitMQErlang(面向并发)RabbitAMQP,XMPP,SMTP,STOMP轻量级、易上手、插件丰富、AMQP协议小中型项目、快速开发
RocketMQJava阿里自定义协议高性能、支持顺序消息、事务消息、轻量分布式部署金融、电商等高并发场景
KafkaScala&JavaApache自定义协议高吞吐、分布式日志系统、偏向于数据流处理大数据处理、日志系统
ActiveMQJavaApacheOpenWire,STOMP,REST,XMPP,AMQP较老牌,功能全,但性能不如其他新一代 MQ老项目、轻量应用
  • 追求可用性:Kafka、 RocketMQ 、RabbitMQ
  • 追求可靠性:RabbitMQ、RocketMQ
  • 追求吞吐能力:RocketMQ、Kafka
  • 追求消息低延迟:RabbitMQ、Kafka
http://www.lryc.cn/news/613257.html

相关文章:

  • ladybird
  • Minio 分布式集群安装配置
  • 【unitrix数间混合计算】2.1 数间混合计算模块(src/number/mod.rs)
  • ADC常用库函数(STC8系列)
  • 【面试向】大模型应用岗 —— Transformer 篇
  • 输电线路电气参数与阻抗计算全解析
  • 从库存一盘货到全域智能铺货:巨益科技全渠道平台助力品牌业财一体化升级
  • 从零开始掌握Hardhat开发
  • 【tips】css模仿矢量图透明背景
  • 小红书开源多模态视觉语言模型DOTS-VLM1
  • Ubuntu 22 下脚本登录MFA堡垒机
  • 嵌入式学习---在 Linux 下的 C 语言学习 Day10
  • 指针——练习
  • OLMo 2 架构深度解析:开放语言模型的技术革命
  • A Logical Calculus of the Ideas Immanent in Nervous Activity(神经网络早期的M-P模型)
  • 【数字图像处理系列笔记】Ch05:傅里叶变换与频率域滤波
  • 【实时Linux实战系列】实时分布式计算架构的实现
  • Mongodb常用命令简介
  • MongoDB学习专题(六)复制集和分片集群
  • 02电气设计-安全继电器电路设计(让电路等级达到P4的安全等级)
  • 内存泄漏系列专题分析之三十二:高通相机CamX ION/dmabuf内存管理机制CmdBuffer
  • VC6800智能相机:赋能智能制造,开启AI视觉新纪元
  • vue2+elementui select框可以选择可以回车添加新的option
  • Godot ------ 中级人物血条制作01
  • ElementUI之表格
  • Oracle 19C In-Memory 列存储技术测试
  • Renesas Electronics RA8M1语音套件(VK-RA8M1)
  • 深入解析Go设计模式:责任链模式实战
  • Electron 中 license-keys 的完整集成方案
  • 网络虚拟化是啥啊?