00 RabbitMQ:前言

news2024/9/20 14:51:00

00 RabbitMQ:前言

  • 1. 前言
    • 1.1. 举个🌰:快递案例
      • 1.1.1. 过程对比
      • 1.1.2. 延伸到程序中
    • 1.2. 举个🌰:订单案例
      • 1.2.1. 流程
      • 1.2.2. 耦合
      • 1.2.3. 响应时间
      • 1.2.4. 并发压力
      • 1.2.5. 系统结构弹性
    • 1.3. 总结

在这里插入图片描述

1. 前言

1.1. 举个🌰:快递案例

1.1.1. 过程对比

在这里插入图片描述
同步: 快递小哥送快递,客户正在开会没办法取快递,于是快递小哥只能一直等着。
在这里插入图片描述
异步: 快递小哥将快递放到 丰巢柜 中,给客户发个短信,这单就算完事了,不用一直等着,就可以去送下一单了,效率大大提高。客户散会后,再去 丰巢柜 去自己的快递。

1.1.2. 延伸到程序中

在这里插入图片描述

1.2. 举个🌰:订单案例

1.2.1. 流程

在这里插入图片描述
同步: 当前面几个步骤成功,中间某个步骤失败,会给客户返回下单失败的响应。这样用户体验极差。
在这里插入图片描述
异步: 当客户保存订单后,将订单号存入消息队列,就可以收到响应了。后续的操作属于对接消息队列,往往和客户响应无关,陆陆续续去做就可以。

1.2.2. 耦合

在这里插入图片描述
同步: 客户下单后,只有当所有步骤走完才可以收到响应。
在这里插入图片描述
异步: 客户下单成功后,订单号保存到消息队列,给客户返回下单成功的响应。至于后续的某一步骤失败,可以单独的去处理,不影响客户的正常响应。

1.2.3. 响应时间

在这里插入图片描述
同步: 响应时间是全部步骤时间总和,时间相对较长。
在这里插入图片描述
异步: 核心步骤完成后,就可以给客户响应了,时间相对较短,大大提升了响应速度。

1.2.4. 并发压力

在这里插入图片描述
同步: 并发压力向后传递。前一个步骤承受多大并发量,后续步骤依旧承受相同的并发量。
在这里插入图片描述
异步: 由于引入的 消息队列 ,前面步骤承受的并发量和后面步骤承受的并发量可以是不一样的。后面的模块对接消息队列时调整一些参数,可以降低并发量。因为后面的步骤执行通常情况下客户并不关心,不影响给客户返回响应,所及执行速度慢一些也无伤大雅。至此实现了 削峰填谷 的效果。

📣📣📣拓展:
在这里插入图片描述
某个时间段,访问量过大,超过硬件承受能力,造成服务器宕机。
某个时间段,访问量很低,服务器资源利用率降低。
旱的旱死,涝的涝死。
**削峰限流的好处**
将高峰期的任务,转移到低谷期来处理。实现了一时间来换空间。高峰期的时候,客户的访问量对服务器的冲击也不会很大,低谷期时也能实现服务器资源更充分地利用。

1.2.5. 系统结构弹性

在这里插入图片描述
同步: 比如说后期新增加个步骤,有可能对原有的步骤进行代码上的修改,牵一发而动全身,工作量可能远超预估。
在这里插入图片描述
异步: 新增的模块同样对接消息队列,用订单号可以查询任何数据,原有的功能不需要任何代码修改,完全符合开闭原则(对修改关闭,对扩展开放)。

1.3. 总结

方式简述
同步系统耦合度高
响应时间长
并发压力持续向后续服务传导
系统结构缺乏弹性,可扩展性差
异步参与的各功能模块相对独立,耦合度低
响应时间短
借助消息队列实现流量削峰填谷
各功能模块对接消息队列,系统功能扩展方便

📣📣📣注意:
并不是把所有交互方式都需要改成异步。
强关联调用还是通过OpenFeign进行同步调用。
弱关联、可独立拆分出来的功能可以使用消息队列进行异步调用。


本文隶属于【个人专栏】:06 RabbitMQ📋📋📋
到这里 00 RabbitMQ:前言 就结束了!!!🎉🎉🎉
后续接 01 RabbitMQ:简单介绍 📣📣📣
欢迎小伙伴们学习和指正!!!😊😊😊
祝大家学习和工作一切顺利!!!😎😎😎

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

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

相关文章

机器人开源调度系统OpenTCS-6最新版本地源码运行

OpenTCS 项目使用 Gradle 而不是 Maven,那么需要使用 Gradle 来导入和构建项目。在 IntelliJ IDEA 中导入和运行使用 Gradle 的项目,可以按照以下步骤进行操作: 克隆 OpenTCS 源码 首先,克隆 OpenTCS 的源码到本地。您可以使用以…

2. 深度学习的项目流程(批量化打包数据、构建模型、训练模型、波士顿房价预测、激活函数、多层感知机)

深度学习流程 1. 深度学习基本流程1.1 流程图1.2 代码实现1.3 基本概念 2. 深度学习项目流程2.1 批量化打包数据2.2 构建模型2.3 训练模型(1)筹备训练(2)开始训练 2.4 模型推理 3. 深度学习实现波士顿房价预测3.1 数据读取、切分、…

Visio绘制的Sigmoid激活函数结构图,可导出高清图片,可修改,无水印。

Visio绘制的Sigmoid激活函数结构图,可导出高清图片,可修改,无水印。 方便用于小论文写作,方便用于毕业设计。 Visio版本为2021版,可用更高版本打开。 下载地址:地址 图片展示:

对递归的一些理解。力扣206题:翻转链表

今天在刷力扣的时候,在写一道翻转链表的题目的过程中,在尝试使用递归解决该问题的时候,第一版代码却每次都返回的是null,这个错误让我尝试去debug了一下,最终找出了问题,并且让我对递归有了一些更深的理解&…

Windows下帆软BI(finebi)单机部署移植(Tomcat)攻略

一、基础环境 操作系统:Windows 10 64bit 帆软BI 版本:V9.0/V10.0 HTTP工具:Tomcat 外置数据库:Oracle 11g 实验内容:将已经部署好的帆软BI从一台电脑移植到另一台电脑 二、前期准备 1、做好外置数据库移植&…

STM32CUBEIDE FreeRTOS操作教程(一):LED闪灯

STM32CUBEIDE FreeRTOS操作教程(一):LED闪灯 STM32CUBEIDE(不是STM32CUBEMX)开发环境集成了STM32 HAL库进行FreeRTOS配置和开发的组件,不需要用户自己进行FreeRTOS的移植。这里介绍最简化的用户操作类应用教程。以STM32F401RCT6开…

JCR一区级 | Matlab实现GA-Transformer-LSTM多变量回归预测

JCR一区级 | Matlab实现GA-Transformer-LSTM多变量回归预测 目录 JCR一区级 | Matlab实现GA-Transformer-LSTM多变量回归预测效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.【JCR一区级】Matlab实现GA-Transformer-LSTM多变量回归预测,遗传优化算法&#…

Vue3--

一、pinia (集中式状态(数据)管理) 1、准备一个效果 2、存储读取数据 3、修改数据三种方式 4、storeToRefs 5、getters 当state中的数据,需要经过处理后在使用时,可以使用getters配置 6、$subscribe的使用…

QT总结——图标显示坑

最近写代码遇到一个神仙大坑,我都怀疑我软件是不是坏了,这里记录一下。 写qt工程的时候我们一般会设置图标,这个图标是窗体的图标同时也是任务栏的图标,但是我发现生成的exe没有图标,这个时候就想着给他加一个图标&…

Linux(CentOS)的“应用商城” —— yum

Linux(CentOS)的“应用商城” —— yum 关于 yum 和软件包Linux 系统(CentOS)的生态yum 相关操作yum 本地配置yum 安装 lrzsz.x86_64 关于 yum 和软件包 首先 yum 是软件下载安装管理的客户端,类似各种手机里的“应用…

OpenAI发布GPT-4 Mini的深度分析及中国大模型的弯道超车机会

引言 在OpenAI封禁中国IP访问其API后,紧接着推出了GPT-4 Mini,这是一个引发广泛关注和讨论的新举措。此举不仅让人们质疑OpenAI的战略方向,更引发了对中国大模型是否能弯道超车的讨论。本文将详细分析GPT-4 Mini的特点、市场影响及中国大模型…

eclipse中的classbean导入外部class文件,clean项目后删除问题

最近被eclipse搞得头疼,下午终于解决 eclipse创建的java项目中,类的输出目录是classbean。由于项目需要,classbean目录下已经导入了外部的类,但每次clean项目时,会把class删掉。 广泛查询,eclipse不清空c…

jenkins删除历史构建记录

1、 登录jenkins,进入【Manage Jenkins】-【Script Console】,输入: def jobName "Test" //删除的项目名称 def maxNumber 60 // 保留的最小编号,意味着小于该编号的构建都将被删除 Jenkins.instance.getItemByFullN…

javascript鼠标跟随星星动画特效

鼠标跟随星星动画特效https://www.bootstrapmb.com/item/14781 创建一个鼠标跟随的星星动画特效在JavaScript中通常涉及到HTML、CSS和JavaScript的结合。以下是一个简单的步骤说明和示例代码,用于创建一个基本的鼠标跟随星星动画: HTML (index.html) ht…

从理论到实践:如何用 TDengine 打造完美数据模型​

在用 TDengine 进行数据建模之前,我们需要回答两个关键问题:建模的目标用户是谁?他们的具体需求是什么?在一个典型的时序数据管理方案中,数据采集和数据应用是两个主要环节。如下图所示: 对于数据采集工程师…

大数据-44 Redis 慢查询日志 监视器 慢查询测试学习

点一下关注吧!!!非常感谢!!持续更新!!! 目前已经更新到了: Hadoop(已更完)HDFS(已更完)MapReduce(已更完&am…

基于Java+SpringMvc+Vue技术的慈善捐赠平台设计与实现(源码+LW+部署讲解)

项目含有源码、文档、PPT、配套开发软件、软件安装教程、项目发布教程、包运行成功以及课程答疑! 软件开发环境及开发工具: 操作系统:Windows 10、Windows 7、Windows 8 开发语言:java 前端技术:JavaScript、VUE.j…

好玩新游:辛特堡传说中文免费下载,Dungeons of Hinterberg 游戏分享

在游戏中,你将扮演Luisa,一个被现实生活拖得疲惫不堪的法律实习生。她决定暂时远离快节奏的公司生活,踏上征服辛特堡地下城的旅程…她会在第一天就被击退,还是能成为顶级猎魔人呢?只有一个办法可以找到答案... 体验刺激…

MATLAB练习题——矩阵(2)

逻辑运算 a [5 0.2 0 -8 -0.7 ],在进行逻辑运算时,a 相当于什么样的逻辑量。 相当于 a[1 1 0 1 1] 角度运算 在 sin(x)运算中,x 是角度还是弧度? 在 sin(x)运算中,x 是弧度,MATLAB 规定所有…

nfs服务器+配置autofs自动挂载

在服务端 在客户端 [rootlocalhost ~]# showmount -e 192.168.231.129 Export list for 192.168.231.129: /data 192.168.231.130 配置autofs自动挂载 在一般 NFS 文件系统的使用过程中,如果客户端要使用服务端所提供的文件系统,可以在 /etc/rc.d/rc.l…