RabbitMQ的用途

 RabbitMQ主要有四个用途,分别是应用解耦、异步提速、削峰填谷、消息分发。详情讲解如下:

RabbitMQ介绍、解耦、提速、削峰、分发 详解、RabbitMQ安装 可视化界面讲解

1.应用解耦:提高系统容错性和可维护性

2.异步提速:提升用户体验和系统吞吐量

3.削峰填谷:提高系统稳定性

4.消息分发:提高系统灵活性


应用解耦

应用解耦是指通过使用消息队列等中间件来降低应用程序之间的直接依赖性,从而实现独立开发、部署和升级的能力。通过解耦,每个应用程序可以通过消息队列发送和接收消息,而不需要了解其他应用程序的具体实现细节。通过应用解耦,可以实现系统的松耦合架构,提高系统的可维护性、扩展性和容错性。

提交订单的时候需要重构库存系统,比如说现在库存系统挂掉了,传统模式下面就没法提交订单了。使 用RabbitMQ 的时候,提交订单的时候,订单系统会把重构库存的信息写入 MQ 系统,这个时候库存系 统挂掉了是不影响订单的提交的,库存系统恢复后可以继续从RabbitMQ 消费消息写入库存。

你可以把快递柜比作RabbitMQ

1 、没有快递柜的时候,消费者如果不在家,快递小哥就不能把快递送到消费者手里了。

2 、没有快递柜的时候快递小哥一天送的快递数量也是有限的。

3 、有了快递柜后,快递小哥可以把快递放在快递柜里面,消费者什么时候有时间都可以去快递柜里面 取回自己的快递。

4 、双十一快递比较多的时候,也可以通过快递柜来消峰,这样就不至于快递送不出去。

异步提速:
异步提速是指通过将耗时的操作转化为异步执行,从而提高系统的响应速度和吞吐量。通过异步处理, 应用程序可以在等待某个操作完成的同时继续执行其他任务,而不需要阻塞等待结果返回。
例如,当一个应用程序需要进行网络请求并等待响应时,如果采用同步方式,应用程序会被阻塞,直到 响应返回才能继续执行其他任务。而通过异步方式,应用程序可以继续执行其他任务,不需要等待网络 请求的结果返回。这样可以提高系统的响应速度,使用户获得更好的体验。

没有使用 MQ

在顺序执行的系统里一个提交订单的操作可能要执行 920ms

一个下单操作耗时: 20 + 300 + 300 + 300 = 920ms

GO 里面也可以使用协程解决这个问题

使用MQ 

用户点击完下单按钮后,只需等待 25ms 就能得到下单响应 (20 + 5 = 25ms) MQ 和后面库存系统、支付 系统、物流系统的交互都是异步完成的。 提升用户体验和系统吞吐量(单位时间内处理请求的数目)。

  

不需要的等待完成

RabbitMQ 不生产消息,他是消息的搬运工。

   

削峰填谷:

削峰填谷是一种通过平衡系统负载,减轻峰值压力和填充低谷时的资源利用率的技术。它的目标是在系统负载波动较大的情况下,合理利用资源,确保系统的稳定性和高效性。

使用了 MQ 之后,限制消费消息的速度为 1000 ,这样一来,高峰期产生的数据势必会被积压在 MQ 中, 高峰就被“ 掉了,但是因为消息积压,在高峰期过后的一段时间内,消费消息的速度还是会维持在1000,直到消费完积压的消息,这就叫做填谷。简单来说就是慢慢分发 使用MQ 后,可以提高系统稳定性。

消息分发:

消息分发是一种将消息从发送者传递到接收者的机制,它在异步系统和事件驱动架构中起着重要的作 用。消息分发可以实现解耦和灵活性,允许不同组件或模块之间通过消息进行通信,从而实现系统的松耦合和可扩展性。

下面是消息分发的一些关键概念和示例:

发布者( Publisher :发布者是消息分发系统中的发送者,它负责生成并发布消息。发布者将消息发送到消息分发系统,而不需要知道消息的具体接收者。

订阅者( Subscriber :订阅者是消息分发系统中的接收者,它通过订阅特定的消息或消息类型来表明自己对消息的兴趣。当有匹配的消息到达时,消息分发系统会将消息传递给订阅者。

主题( Topic :主题是消息分发系统中用于分类和组织消息的标识符或名称。发布者可以将消息发布到特定的主题,而订阅者可以选择订阅感兴趣的主题。通过主题,可以实现消息的细粒度过滤和选择性订阅。

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

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

相关文章

自动驾驶系统中的数据闭环:挑战与前景

目录 自动驾驶概况 1.1自动驾驶分级 1.2自动驾驶国内发展 ​1.3自动驾驶架构模型 数据闭环的意义 2.1 搜集corner case的数据 2.2 提高模型的泛化能力 2.3 驱动算法迭代 数据闭环落地的痛点及对策 3.1 数据采集和使用的合规性问题 3.2 数据确权问题 3.3 数据采集…

101_Linux文件挂载系统相关

一、文件系统简介 传统的磁盘与文件系统应用中,一个分区就只能够被格式化成为一个文件系统,所以我们可以说一个文件系统就是一个硬盘分区。 随着新技术的出现如LMM与软件磁盘阵列software raid),这些技术可以将一个分区格式化为多个文件系统(例如LWM),也能够将多个分区合成一…

第十二讲:指针(4)

第十二讲:指针(4) 1.回调函数1.1什么是回调函数1.2深入理解并使用回调函数1.2.1简单写法1.2.2优化 2.qsort函数详解2.1函数简单介绍2.3qsort函数使用举例2.3.1qsort函数排序整形数据2.3.2qsort函数排序结构数据 3.qsort函数的模拟实现3.1冒泡…

免费PDF批量加密工具

最近在找PDF批量加密的软件来着,发现很多都是需要收费的,当然如果平时工作需要用的比较多,支持一下还是ok的,但是多数人还是偶尔用一下所以没有必要买。 工作用的话,一般企业文件、个人隐私资料、重要合同...所有重要文…

嘎嘎好用的虚拟键盘第二弹之中文输入法

之前还在为不用研究输入中文而暗自窃喜 这不新需求就来了(新需求不会迟到 它只是在路上飞一会儿) 找到了个博主分享的代码 是好使的 前端-xyq 已经和原作者申请转载了 感谢~~ 原作者地址:https://www.cnblogs.com/linjiangxian/p/16223681.h…

OpenAI推出DALL·E 3识别器、媒体管理器

5月8日,OpenAI在官网宣布,将推出面向其文生图模型DALLE 3 的内容识别器,以及一个媒体管理器。 随着ChatGPT、DALLE 3等生成式AI产品被大量应用在实际业务中,人们越来越难分辨AI和人类创建内容的区别,这个识别器可以帮…

NSSCTF | [LitCTF 2023]我Flag呢?

这道题没啥好说的,题目标签为源码泄露,我们直接CtrlU查看网页源码就能在最后找到flag 本题完

如何用微信小程序实现远程控制4路控制器/断路器

如何用微信小程序实现远程控制4路控制器/断路器呢? 本文描述了使用微信小程序调用HTTP接口,实现控制4路控制器/断路器,支持4路输出,均可独立控制,可接入各种电器。 可选用产品:可根据实际场景需求&#xf…

draw.io 网页版二次开发(1):源码下载和环境搭建

目录 一 说明 二 源码地址以及下载 三 开发环境搭建 1. 前端工程地址 2. 配置开发环境 (1)安装 node.js (2)安装 serve 服务器 3. 运行 四 最后 一 说明 应公司项目要求,需要对draw.io进行二次开发&…

福建医疗器械展/2024厦门国际医疗器械展览会重磅来袭

2024中国(厦门)国际医疗器械展览会 时 间:2024年11月1-3日 November 1-3, 2024 地 点:厦门国际会展中心 Xiamen International Conference & Exhibition Center ​ ◆组织机构 主办单位: 中国技术市场协会医…

Mysql-用户变量的声明与使用

#声明变量 #1.标识符不能以数字开头 #2.只能使用_或$符号,不能使用其他符号 #3.不能使用系统关键字 setuserName刘德华; select userName:刘青云;#将赋值与查询结合 #查询变量、使用变量,匿名的时候建议加上as select userName as 读取到的userName变量…

TriCore:Interrupt 2

今天继续来看看 IR 模块。 名词缩写 缩写全称说明IRInterrupt Router SRService Request 包括: 1. External Resource 2. Internal Resource 3.SW(Software) SPService Privoder 包括: 1. CPU 2. DMA SRNService Request NodeS…

【linux-IMX6ULL-uboot初次编译及烧录

目录 1. uboot基本概念1. 1 uboot的编译 3. uboot的烧录2. uboot的烧录结果 第一次不进行原理性的探究,也不关注源码内容,只是进行一个直观的了解,对uboot进行初次编译并进烧录到IMX6ULL板卡中 1. uboot基本概念 U-Boot(Universa…

java项目之智慧图书管理系统设计与实现(springboot+vue+mysql)

风定落花生,歌声逐流水,大家好我是风歌,混迹在java圈的辛苦码农。今天要和大家聊的是一款基于springboot的智慧图书管理系统设计与实现。项目源码以及部署相关请联系风歌,文末附上联系信息 。 项目简介: 智慧图书管理…

GT2712-STBD 三菱触摸屏12.1寸型

GT2712-STBD 三菱触摸屏12.1寸型 GT2712-STBD参数说明:12.1型, SVGA, TFT彩色液晶屏 65536色, 黑色边框, 电源DC24V。 一、三菱触摸屏GT2712-STBD性能规格: [显示部*1*2] . 显示软元件:TFT彩色液晶屏 . GT2712-STBD画面尺寸:12.1寸 . GT2712-STBD…

六级翻译笔记

理解加表达 除了专有名词不能自己理解翻译,其它都可以 时态一般唯一 题目里出现有翻译为 客观存在: there be 单词结尾加er和ee的区别:er是主动,ee是被动 中文句子没有被动,也可以英文翻译为被动 中文的状语可以不是…

使用AudioCraft(MusicGen)生成音乐

AudioCraft 是一个 PyTorch 库,用于音频生成的深度学习研究。AudioCraft 包含两个先进的AI生成模型:AudioGen和MusicGen,它们共同致力于生成高质量的音频内容。 MusicGen是一个简单且可控的音乐生成模型。它利用Meta提供的20K小时授权音乐进行训练,能够根据文本描述或已有…

web后端——netbeans ide +jsp+servlet开发学习总结

目录 jsp基础 netbeans开发工具问题访问网页失败,404,not found 等?HTTP Status 405 - HTTP method POST is not supported......netbeans 提示无法启动GlassFish Server 4.1.1:服务器未运行时, HTTP 或 HTTPS 监听程序端口已被占用404 问题netbeans中项目中有多个html文件,如…

嵌入式RTOS面试题目

用过哪些嵌入式操作系统?使⽤RTOS和裸机代码开发有什么区别(优缺点)? 之前的⼀个项⽬是采⽤裸机代码开发的,写起来还⾏,通过状态机来管理业务逻辑和各种外设。 但是随着外设的增加,任务之间的…

2024CCPC郑州站超详细题解(含题面)ABFHJLM(河南全国邀请赛)

文章目录 前言A Once In My LifeB 扫雷 1F 优秀字符串H 随机栈J 排列与合数L Toxel 与 PCPC IIM 有效算法 前言 这是大一博主第一次参加xcpc比赛,虽然只取得了铜牌,但是收获满满,在了解了和别人的差距后会更加激励自己去学习,下面…